特殊な条件を除外する際に問題があります。私はすでにLINKの例を作成しています。正規表現:条件のときに文字列内の単語の一致を避ける方法
私はこのような文のリストがある場合:
X-MAS TREE //it should be excluded because match my dictionary
BLA BLA TREE
XMAS TREE
X-MASTREE
X-TREE
X-MASTREE
をそして私はXMAS TREEは同義語持っている辞書を持っている:XMAS TREE、X-MASTREE、X-TREE、TREEを。そして私はすべての同義語を私の辞書の単語に変更する必要があります。
除外方法X-MAS TREE? X-MAS TREEが既にTREE
Iを持っているので、私はキーワードTREEで検索する場合は、これらの正規表現のすべてなので、X-MASとTREE を交換します 、それは、無限ループになります多くの組み合わせを試してみましたが、動作していない:
\b(XMAS TREE|X\-MASTREE|X\-TREE|TREE|(?!X\-MAS TREE)\b
\b(XMAS TREE|X\-MASTREE|X\-TREE|(?!X\-MAS \s)TREE)\b
\b(XMAS TREE|X\-MASTREE|X\-TREE|((?!X\-MAS)|\w*)TREE)\b
\b(XMAS TREE|X\-MASTREE|X\-TREE|(?:(?!X\-MAS))TREE)\b
EDIT
私は自分のコードでループを使って正規表現を作成し、別の辞書に使用する必要があるため、境界を使用する必要があります(何らかの理由で)。コード、唯一のあなたはこれを試すことができ
不要なケースをすべてルックアヘッドとして表示することはありますか? (?<!X \ -MAS)(?<!X \ - )\ b(?<!XMAS \ s)(?<!X \ -MAS \ s)TREE \ b'](https://regex101.com/r/6pL1ul/1)。あるいは、ブラックリストに載っているすべての 'X-'を削除し、 'TREE'を必要な文字列に置き換えるという2つのステップで行います。 –
最初の3つの正規表現、私はそれを除外する必要があるX-MAS TREEだけが必要です。もう一つは正しい。 –
お試しください: ['/^([^X].+|X[^-].+|X-[^M].+|XM[^A].+|X-MA[^S ] | + | X-MAS [^]。+ | X-MAS TRE [^ T]。+ | X-MAS T [^E] +)/ gm'](http://regexr.com/3f17o) – Faibbus