我希望能够匹配一个特定的字符序列,该序列以特定子字符串开头并以特定子字符串结尾。如果一行中应该有多个匹配项,则我的正向预查正则表达式无法工作。我理解这是因为(.+)捕获了直到找到最后一个正向预查表达式的所有内容。如果它能捕获直到找到第一个表达式,那就太好了。
以下是我的正则表达式尝试:
以下是我的正则表达式尝试:
@@FOO\[(.*)(?=~~)~~(.*)(?=\]@@)\]@@
样例输入:
@@FOO[abc~~hi]@@ @@FOO[def~~hey]@@
期望输出:2个匹配项,每个匹配项有2个匹配组(abc, hi)和(def, hey)。
实际输出:1个匹配项,有2个组(abc~~hi]@@ @@FOO[def, hey)
是否有办法得到期望的输出结果?
提前感谢!
.*?
而不仅仅是.*
,因为我几乎从不意味着“尽可能匹配”。 - Chris Haas