事情不是很好。
到目前为止我的正则表达式:
(?<!not\s)(?<!n't\s)(nice|friendly|excelent|comfortable|easy access|good|clean|beautiful)
如果句子不包含单词,我想只匹配单词(很好,友好......在这句话中...):&#34; not&#34;或&#34; n&#t;#34; (a.k.a wasn&#t; t,isn&#t; t)。 A.k.a积极的句子。
但这个正则表达式仅适用于以下句子:
The thing was very not nice.
如何编写lookbehind以检查单词&#34; not&#34;或&#34; n&#t;#34;在我的形容词之前不是处于什么位置?
答案 0 :(得分:3)
您可以使用否定前瞻功能来检查字符串中的任何位置是否有not
或n't
,而\K
则会丢弃您不想要的部分:
^(?!.*(?:not|n't)).*\K(nice|friendly|excellent|comfortable|easy access|good|clean|beautiful)
(?!...)
如果内部匹配,则会失败,(?:not|n't)
是非捕获组。
请记住,这是一个非常简单的检查。它与nice
中的This is nice but not pretty
不匹配。如果您想要更深入地理解语法,那么您必须深入挖掘。
答案 1 :(得分:0)
Lookbehinds必须是固定长度的。
划分任务可能更容易。首先检查句子是否包含&#34; nice&#34;,&#34; friendly&#34;等,然后在单独的条件中,检查它是否包含否定。
这样可以更容易地检测双阴性:p