如何匹配匹配字符串前不包含单词的字符串?

阅读堆栈溢出示例后,我找不到适用于以下测试用例的有效解决方案。

我需要将正在测试的模式与字符串列表相匹配。

如果 word1 存在,模式应该匹配,但 word2 在它之前不存在。任何角色都可以存在于两者之间。

示例: pattern - 如果单词tty_osc存在并且mov_osc在它之前的任何地方都不存在则匹配。

  1. abd.defg.mov_osc.ccr.tty_osc.val- 不匹配...tty_osc存在但mov_osc之前也存在tty_osc

  2. abd.defg.ccr.tty_osc.val- 匹配 -tty_osc存在,mov_osc之前没有

我尝试了以下负面回顾正则表达式 -(?<!mov_osc).*tty_osc


当年话下
浏览 105回答 2
2回答

湖上湖

您可以使用否定前瞻来断言右边的不是您禁止的词,后跟接受的词。^(?!.*?\bmov_osc\b.*?\btty_osc\b).*?\btty_osc\b.*$正则表达式演示

肥皂起泡泡

你需要把.*消极的目光移到背后&nbsp;(?<!mov_osc.*)tty_osc。否则它将匹配 tty_osc 之前的所有内容,而后面的否定查找只会检查字符串的开头。RegexStorm.Net 演示
打开App,查看更多内容
随时随地看视频慕课网APP