2011-07-08 3 views
0

正規表現で接頭辞と接尾辞の検索を頭で囲むのはちょっと難しいです。私は練習して、次のことをしたい:Java Regex Prefix Suffix

与えられた文字列: "ジェームズは良い"。テキストが "James"または "James is"または "James is good"の場合、一致する最大の部分文字列を順番に照合することができます。だから私は次のテキストを持っている場合: "ジェームスジェームズはジェームズ"、私は "ジェームズ"をキャプチャすることができる必要があります "ジェームス"だけではありません。 Simalrly "James JamesはGood Jamesです" JamesはGood "で、" James "はそれが秩序がなくて最大ではないと教えてください

私はサフィックスを使用できないと思います(?!) "良い"が存在しない場合は "James"としか言いませんが、接頭辞と接尾辞の概念が正しく一致するかどうかはわかりません。

この場合の明確化または助けは素晴らしいでしょう。私はJavaの正規表現のAPIに慣れているので、私はタグを付けた。

答えて

0

私は確信していませんが、私はあなたが背後を見てアサーションを見ていると考えています。

アサーションの長さがゼロであり、空の文字列と一致しているため、この構造体に一致する文字はありません。あなたは

はあなたが regular-expressions.info

Perlretutがあるの詳細については、こちらをチェックすることができ

(あなたが負のバージョンを使用している場合か)それは、特定の他のパタ​​ーンが先行または続いている場合にのみ、パターンに一致するためにそれらを使用することができますPerlについては、それはJavaで同様に動作します。

1

私はあなたが「James is」と次の言葉が存在すればそれを捕まえたいと思っています。この場合、"(James is(?:\s+\w+)?)"と言う必要があります。明らかにJavaコードでは、バックスラッシュを複製する必要があります。

私はこの正規表現を実行していませんが、私はそれがあなたのデバッグに良いスタートを与えることができると信じています。

+0

お返事ありがとうございます!はい、私はそれが「良い」場合にのみ次の言葉を捉えたいと思います。それ以外の場合、私は "ジェームズは"したい。 "James"と "is"と同じこと。私は、次の単語が "is"でないなら "James"を捕まえたい。それ以外の場合、私は "ジェームズは"したい。 – Panther

+0

この場合、 "(Jamesは(?:\ s + good)?)" – AlexR