2

次のような式を評価したいと思います。

これはストリートブルーです

次のように、少しラフな正規表現を使用して色を決定できます。

。?(シアン|緑|赤|青)

これまでのところ、色の原因となるオブジェクトをどのように特定できますか?つまり、この場合、「Street」という単語を取り戻したいのですが、「Car」、「Arrow」、またはその他の名詞である可能性があります。

要するに、この場合は色の特定の点(数学)を見つけたら、色が適用されているオブジェクトに対応する最後の単語、または同じものを取得できる正規表現を構築することは可能ですか?正規表現で見つかった一致前の単語?

4

3 に答える 3

2

次の正規表現が機能するはずです。

(\w+)\s+(blue|green|cyan)

色が一致する前の単語は、キャプチャグループ1に含まれます。

Javaテスト:

Pattern p = Pattern.compile("(\\w+)\\s+(blue|green|cyan)");
Matcher matcher = p.matcher("This is the street blue");
if(matcher.find()) {
    System.out.println(matcher.group(1));
}
于 2012-09-25T13:49:37.310 に答える
0

この式は、探しているものに最も適したものであり、確かにさらにデータ処理が必要ですが、非常に便利です.

コメントありがとうございます

于 2012-09-25T14:02:36.090 に答える
0

Use word boundaries to get the word before a color (with lookahead):

/\b.+\b(?=\s+(cyan|green|red|blue))/
于 2012-09-25T13:53:31.917 に答える