Regex 只有在负向前看和向后看都失败时才匹配

Regex 只有在负向前看和向后看都失败时才匹配,regex,Regex,我试图创建一个正则表达式,检查一个单词是否存在于一个句子中,当且仅当它不包含在单引号中时 我尝试过不同的正则表达式,例如: (?<!' )(?i:THEN)|(?i:THEN)(?! ') 一些意见将不胜感激 谢谢大家! 描述 这个正则表达式将匹配单词然后,该单词没有引号 \bTHEN\b(?<!'\s*THEN(?=\s*')) 例子 现场演示 然后匹配 “然后匹配 然后“匹配” “那么” “然后匹配 然后“匹配” “那么” ”然后我跳了起来。匹配 然后他说“哇”。匹配 斯

我试图创建一个正则表达式,检查一个单词是否存在于一个句子中,当且仅当它不包含在单引号中时

我尝试过不同的正则表达式,例如:

(?<!' )(?i:THEN)|(?i:THEN)(?! ')
一些意见将不胜感激

谢谢大家!

描述 这个正则表达式将匹配单词
然后
,该单词没有引号

\bTHEN\b(?<!'\s*THEN(?=\s*'))

例子 现场演示

然后匹配
“然后匹配
然后“匹配”
“那么”
“然后匹配
然后“匹配”
“那么”
”然后我跳了起来。匹配
然后他说“哇”。匹配
斯腾斯
解释
节点说明
----------------------------------------------------------------------
\b单词char(\w)和
不是单词char的东西
----------------------------------------------------------------------
然后‘然后’
----------------------------------------------------------------------
\b单词char(\w)和
不是单词char的东西
----------------------------------------------------------------------

(?是当单词是引号中唯一的一个时,还是当它也是被引用句子的一部分时?@ClasG仅当单词是引号中唯一的一个时。您的要求不太清楚。请尝试
(?i)然后(?这将不匹配
'then'
,但将匹配
'then'
'then'
。我建议匹配您不需要的内容,并匹配和捕获您需要保留的内容。然后使用特定于语言的方法获得最终结果。请澄清一下,您使用的是哪个正则表达式引擎?可能的解决方案可能取决于这是事实。
' then I jumped.
He said then 'Wow'.
\bTHEN\b(?<!'\s*THEN(?=\s*'))
NODE                     EXPLANATION
----------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char
----------------------------------------------------------------------
  THEN                     'THEN'
----------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char
----------------------------------------------------------------------
  (?<!                     look behind to see if there is not:
----------------------------------------------------------------------
    '                        '\''
----------------------------------------------------------------------
    \s                       whitespace (\n, \r, \t, \f, and " ")
----------------------------------------------------------------------
    THEN                     'THEN'
----------------------------------------------------------------------
    (?=                      look ahead to see if there is:
----------------------------------------------------------------------
      \s                       whitespace (\n, \r, \t, \f, and " ")
----------------------------------------------------------------------
      '                        '\''
----------------------------------------------------------------------
    )                        end of look-ahead
----------------------------------------------------------------------
  )                        end of look-behind
----------------------------------------------------------------------
  (?<!                     look behind to see if there is not:
----------------------------------------------------------------------
    'THEN                    '\'THEN'
----------------------------------------------------------------------
    (?=                      look ahead to see if there is:
----------------------------------------------------------------------
      '                        '\''
----------------------------------------------------------------------
    )                        end of look-ahead
----------------------------------------------------------------------
  )                        end of look-behind
----------------------------------------------------------------------