在互联网上看了一个小时之后,我怎么能找到答案呢?
我有这句话:
HeLLo woRLd HOw are YoU
我想要捕获包含两个以下大写字母的所有组
[A-Z]{2}
上面的正则表达式有效但只捕获LL
(前两个大写字母),而我希望LL
在一个组中,而在其他组中RL
HO
< / p>
答案 0 :(得分:3)
大多数正则表达式引擎都会提供一些方法来使表达式全局。这意味着您的表达式将多次应用。此全局标志通常在表达式末尾用/g
标记表示。 This是没有/g
标记的正则表达式,而this是应用所述标记时发生的情况。
不同的语言以不同的方式公开此类功能,例如,在C#中,这是通过Regex.Matches
语法完成的。在Java中,您使用while(matcher.find())
,它不断提供与提供的模式匹配的子字符串。
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())
答案 1 :(得分:0)
在这种情况下,你不能拥有多个群组,但可以有多个匹配。将全局标志添加到正则表达式并使用方法匹配正则表达式。
对于javscript,它将是/[A-Z]{2}/g
。
该方法最有可能返回一个匹配数组,您可以使用索引来访问它们。