1

例如,我们正在尝试在三个“s”之间的任何文本上进行匹配

"""这里有一些文字"""

我们想在这里捕获一些文本。我们可以正常工作,但是,当 "s 的三元组之间的文本包含正斜杠时,我们会遇到问题/。例如,""" 这不起作用""",所以如果我们有;

""" 这不起作用""" """ 这里有一些文字 """

然后匹配继续并忽略第一个“””并继续匹配第二个结束“””所以匹配变为;

这不起作用/不起作用这里有一些文字

当我们想要的只是这不起作用/不起作用。我使用的正则表达式如下;

(?:"{3})([\p{Alnum}|\p{Punct}|\p{Space}]*)(?:"{3})

我们使用捕获组作为注释。

4

2 回答 2

1

似乎是贪婪/懒惰量词的问题。更改**?惰性匹配。

IE(?:"{3})([\p{ALnum}|\p{Punct}|\p{Space}]*?)(?:"{3})

于 2012-07-16T09:48:54.280 回答
0

这给出了预期的结果(在 rubular.com 中测试):

正则表达式:"""\s*([\S]+)\s+([\S]+)\s+([\S]+)\s*"""
输入:""" This doesn/'t work """ """ Some text here """
匹配:""" This doesn/'t work """""" Some text here """

匹配组:

Match 1
1.  This
2.  doesn/'t
3.  work
Match 2
1.  Some
2.  text
3.  here
于 2012-07-16T09:49:01.673 回答