正则表达式前瞻

jam*_*mes 5 regex regex-lookarounds

我正在使用正则表达式来查找:

test:?
Run Code Online (Sandbox Code Playgroud)

跟随任何角色,直到它击中下一个角色:

test:?
Run Code Online (Sandbox Code Playgroud)

现在,当我运行这个正则表达式时,我做了:

((?:test:\?)(.*)(?!test:\?))
Run Code Online (Sandbox Code Playgroud)

在这篇文章中:

test:?foo2=bar2&baz2=foo2test:?foo=bar&baz=footest:?foo2=bar2&baz2=foo2
Run Code Online (Sandbox Code Playgroud)

我期望得到:

test:?foo2=bar2&baz2=foo2

test:?foo=bar&baz=foo

test:?foo2=bar2&baz2=foo2
Run Code Online (Sandbox Code Playgroud)

但相反,它匹配一切.有更多正则表达式经验的人知道我哪里出错吗?之前我曾使用正则表达式进行模式匹配,但这是我第一次看到/看到前瞻性.

在此先感谢任何帮助/提示/指示:-)

小智 5

我想您可以探索一个贪婪的版本。
(已扩展)

(test:\? (?: (?!test:\?)[\s\S])* )