针对特定子字符串创建具有“非”条件的正则表达式

针对特定子字符串创建具有“非”条件的正则表达式

我有一个用例,我正在字符串中搜索特定的子字符串,如果该特定字符串包含另一个特定子字符串,我希望它被拒绝。

前任:

  1. pikachu_is_the_best_ever_in_the_world_go_pikachu
  2. mew_is_the_best_ever_in_the_world_go_mew
  3. raichu_is_the_best_ever_in_the_world_go_raichu

我希望我的 Regex 表达式选取包含单词“best”而不是单词“mew”的字符串,即第一个和第三个字符串。

我尝试将^(.*best).*$和组合^((?!mew).)*$到下面的表达式中,第二个正则表达式仅忽略字符串开头存在“mew”的单词。

^(.*best)((?!mew).).*$

并尝试过

^((?!mew).)(.*best).*$

答案1

  • Ctrl+F
  • 找什么:^(?=.*best)(?:(?!mew).)*$
  • 检查环绕
  • 检查正则表达式
  • 请勿检查. matches newline
  • Search in document

解释:

^           : start of line
(?=         : positive lookahead
  .*        : 0 or more any character but newline
  best      : literally "best"
)           : end lookahead
(?:         : start non capture group
  (?!       : negative lookahead, make sure we don't have 
    mew     : literally "mew"
  )         : end lookahead
  .         : any character but newline
)*          : group may appear 0 or more times
$           : end of line

相关内容