正则表达式匹配但不在另一个单词之前包含一个单词

hrs*_*990 5 regex

我在一行中有两个特定的词 saydogcat

并且说dog之前出现cat

我如何制作一个正则表达式,它告诉我包含dog和的所有行cat,但只显示dog直到之后的单词cat,包括cat,但不是dog

zx8*_*x81 5

选项 1:后视

(?<=dog).*?cat
Run Code Online (Sandbox Code Playgroud)

细节:

  • (?<=dog)向断言当前位置之前的内容是dog
  • .*?延迟匹配所有字符直到...
  • cat匹配文字字符

选项 2:\K(PCRE、Perl、Ruby 2+)

dog\K.*?cat
Run Code Online (Sandbox Code Playgroud)

告诉\K引擎放弃到目前为止与最终匹配的内容

选项 3:捕获组(JavaScript 和其他不支持其他两个选项的引擎)

dog(.*?cat)
Run Code Online (Sandbox Code Playgroud)

括号捕获您想要组 1 的内容。您必须以您的语言从组 1 中检索匹配项。