用于匹配指定文本的正则表达式,然后是除指定文本之外的任何内容,然后是任何内容,然后是指定文本

Regex for matching specified text, then anything except a specified text, then anything, then specified text

我已经进行了大量搜索,但我认为它只是在我的头上。我不知道我应该做什么来解析这段文本。

假设我有字符串: 案例 1:"hi! hello, how are you doing today" 案例 2:"hi! hello, how are you today" 案例 3:"hi! hello, doing you today" 案例 4:"hi! hello, how are you doing today blah"

如果我想匹配有任何文本的地方,那么 "hello" 然后任何文本(但不是“, doing” 并以 "today" 结尾,那将如何完成?

http://www.regexpal.com/ 我正在使用 (hello)((?!, doing).*),它不会 select 情况 3,但会 select 情况 2 和 4,当我只想 select 案例 1. 有什么想法吗?

您可以使用

^.*?hello(?:(?!,\s+doing).)*today$

regex demo

详情:

  • ^ - 字符串开头
  • .*? - 除换行字符外的任何 0+ 个字符,尽可能少
  • hello - 文字子串
  • (?:(?!,\s+doing).)* - 除换行符以外的零个或多个字符,尽可能多,不启动定义为:
    • , - 逗号
    • \s+ - 1+ 个空格
    • doing - 文字子串
  • today - 文字子串
  • $ - 字符串结尾。