为什么这么简单的事情我在互联网上查找一小时后找不到答案?
我有这样一句话:
HeLLo woRLd HOw are YoU
我想捕获由以下两个大写字母组成的所有组
[A-Z]{2}
上面的正则表达式可以工作,但只捕获LL
(前两个大写字母),而我希望在一个组中包含LL
,在其他组中也包含RL
HO
最佳答案
大多数正则表达式引擎都会公开一些方法来使您的表达式全局。这意味着您的表达式将应用多次。这个全局标志通常在表达式末尾用/g
标记表示。 This是不带 /g
标志的正则表达式,而 this当您应用所述标志时会发生什么。
不同的语言以不同的方式公开此类功能,例如在 C# 中,这是通过 Regex.Matches
语法完成的。在 Java 中,您使用 while(matcher.find())
,它不断提供与所提供的模式匹配的子字符串。
编辑:我不是Python人,但从可用的示例来看here ,你可以这样做:
it = re.finditer(r"[A-Z]{2}", "HeLLo woRLd HOw are YoU")
for match in it:
print "'{g}' was found between the indices {s}".format(g=match.group(), s=match.span())
关于正则表达式多次匹配序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29250841/