0

別のパターンが進行しない限り、特定のパターンに一致する正規表現を機能させるのに苦労しています。例えば、

Accessory for MyProduct01 <<< Should be classified as an accessory
MyProduct01 with accessory << Should be classified as a product

したがって、前の単語が「with」でない限り、「accessory」正規表現に「match」「accessory」のようなものを追加する必要があります。

単語が文字列のどこかにあるかどうかを見つけるために否定的な先読みを使用している例をいくつか見ましたが、否定する単語の位置についてもう少し具体的にしたいと思います。何かのようなもの:

(?!with\s)accessory
4

2 に答える 2

2

正規表現でネガティブな後読みを使用するだけです。

(?<!with\s)accessory
于 2013-03-18T13:11:10.993 に答える
0

Pythonは無制限のルックビハインドをサポートしていないため、現在使用しているものと同様の先読みを使用する必要があると思いますが、元のパターンを少し変更してください。

^(?!\bwith\b.*\baccessory\b)(?=.*\b(accessory)\b)

ここで、ネガティブ先読みは、「アクセサリ」が「with」という単語の後に続かないようにするために使用されます。次に、ポジティブルックアヘッドを使用して、「アクセサリ」という単語が文字列内に出現するようにします。何らかの理由でキャプチャする必要がある場合は、グループでキャプチャします。

search私が上記を書いた方法に基づいて、あなたはメソッドではなくメソッドを使用したいと思うでしょうmatch。検索文字列全体がパターンと一致する必要があるを使用するmatchには、パターンにもう少し追加する必要があります。

^(?!\bwith\b.*\baccessory\b)(?=.*\b(accessory)\b).*$
于 2013-03-18T13:00:26.743 に答える