2

単語のリストがあり、それらの単語の任意の組み合わせに一致させたいです。apple私が単語を持っていて、次の文字列を使用しているorangeと仮定します。mango

This place has the best apple pie. They also have orange, apple and mango-apple smoothie ... 

私がこれまでに持っている正規表現は\b((apple|orange|mango)[\s-(,\s)]*)+

単語の正しい組み合わせに一致しますが、さらにシーケンスの最後にある余分なスペースに一致します。私が得る試合:

"apple "
"orange, apple "
"mango-apple "

私はそれがなぜそうするのか知っています。正規表現を変更して、最後の最後のスペースを削除するにはどうすればよいですか?

4

1 に答える 1

3

最後に a を追加する\bとうまくいったようです。また、-角括弧内に配置する場合は、最後に配置する必要があります。したがって、正規表現を次のように変更するだけです。\b((apple|orange|mango)[\s(,\s)-]*)+\b

編集:

あなたのコメントによると、私はこれを試しました: \b((apple|orange|mango)([\s,-]+(apple|orange|mango))*)+\b. apple mango現在の正規表現の問題は、たとえば一致できるように、最後にスペースも挿入していることです。

apple私が提案する正規表現は、スペース、ダッシュ、orangeまたはコンマの後に単語が続く場合にのみ、それらと一致する必要がありますmango

于 2013-02-18T06:02:50.797 に答える