正则表达式匹配指定的文本,然后匹配指定的文本,然后任何东西,然后指定文本

时间:2017-06-29 22:28:54

标签: regex language-agnostic regex-negation

我已经进行了大量的搜索,但我认为这只是我的头脑。我无法弄清楚我应该做些什么来解析这个文本。

让我说我有字符串: 案例1:"嗨!你好,你今天过得怎么样?#34; 案例2:"嗨!你好,你今天过得怎么样?#34; 案例3:"嗨!你好,今天做你" 案例4:"嗨!你好,今天你好吗?"

如果我想匹配任何文本的地方,那么"你好"那么任何文字(但不是",做"并以&#34结束;今天",怎么做?

http://www.regexpal.com/上我使用(hello)((?!, doing).*)不会选择案例3,但会选择案例2和4,当我希望它只选择案例1.有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参阅regex demo

<强>详情:

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