我想匹配以下模式:'''abc'''
. 但是文件中有一些噪音''''''abc'''
。我只想要前面有精确三个的单词" ' "
。我试过了" [^']'''[^'] "
。但它不起作用。正则表达式" '{3} "
将匹配三个以上" ' "
。
那么有人可以帮助我吗?
我想匹配以下模式:'''abc'''
. 但是文件中有一些噪音''''''abc'''
。我只想要前面有精确三个的单词" ' "
。我试过了" [^']'''[^'] "
。但它不起作用。正则表达式" '{3} "
将匹配三个以上" ' "
。
那么有人可以帮助我吗?
(?<!')'{3}(?!')
如果支持,请使用负前瞻(和后瞻)。
编辑:假设您想匹配'''
from '''abc'''
,因为这就是您的问题所暗示的。如有不同,请注明。
您基本上已经自己给出了解决方案。如果您想匹配正好被 3 包围的字符串,'
请执行此操作(我使用 Python 作为示例):
In [33]: re.findall("'{3}\w+'{3}", "'''abc'''")
Out[33]: ["'''abc'''"]
如果你想避免那些前面超过 3 的字符串'
,那么你最好采取否定的后向断言(?<!...)
:
In [59]: re.findall("(?<!')'{3}\w+'{3}", "'''abc'''")
Out[59]: ["'''abc'''"]
In [60]: re.findall("(?<!')'{3}\w+'{3}", "''''''''''abc'''")
Out[60]: []
In [62]: re.findall("(?<!')'{3}\w+'{3}", "'''abc''''''''''")
Out[62]: ["'''abc'''"]
如果您还想避免超过 3 的字符串'
,请添加否定的前瞻断言(?!...)
:
In [63]: re.findall("(?<!')'{3}\w+'{3}(?!')", "'''abc'''")
Out[63]: ["'''abc'''"]
In [64]: re.findall("(?<!')'{3}\w+'{3}(?!')", "''''''''''abc'''")
Out[64]: []
In [65]: re.findall("(?<!')'{3}\w+'{3}(?!')", "'''abc''''''''''")
Out[65]: []
注意:是否支持前瞻和后瞻取决于您的编程语言。如果是这样,这是实现您想要的最佳方式。
尝试类似的东西^[^']*'{3}[^']+'{3}[^']*$
。注意[^']+
中间的,因为你还需要告诉它两边的三个'''之间有什么东西。