用于匹配指定文本的正则表达式,然后是除指定文本之外的任何内容,然后是任何内容,然后是指定文本
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$
详情:
^
- 字符串开头
.*?
- 除换行字符外的任何 0+ 个字符,尽可能少
hello
- 文字子串
(?:(?!,\s+doing).)*
- 除换行符以外的零个或多个字符,尽可能多,不启动定义为:
,
- 逗号
\s+
- 1+ 个空格
doing
- 文字子串
today
- 文字子串
$
- 字符串结尾。
我已经进行了大量搜索,但我认为它只是在我的头上。我不知道我应该做什么来解析这段文本。
假设我有字符串: 案例 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$
详情:
^
- 字符串开头.*?
- 除换行字符外的任何 0+ 个字符,尽可能少hello
- 文字子串(?:(?!,\s+doing).)*
- 除换行符以外的零个或多个字符,尽可能多,不启动定义为:,
- 逗号\s+
- 1+ 个空格doing
- 文字子串
today
- 文字子串$
- 字符串结尾。