爲什麼簡單的事情在互聯網上看了一個小時後我找不到答案?不止一次正則表達式匹配
我有這樣的句子:
HeLLo woRLd HOw are YoU
我要拍攝包含兩個所有羣體大寫字母
[A-Z]{2}
上述工程正則表達式,但僅捕獲LL
(前兩個大寫字母),而我想要LL
在一個組中,而在其他組中也是RL
HO
請幫忙嗎?
爲什麼簡單的事情在互聯網上看了一個小時後我找不到答案?不止一次正則表達式匹配
我有這樣的句子:
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())
你不能在這種情況下有多個組,但你可以有多個匹配。將全局標誌添加到您的正則表達式,並使用一種方法來匹配正則表達式。
對於javscript,它將是/[A-Z]{2}/g
。 該方法最有可能返回一個匹配數組,並且您可以使用索引來訪問它們。
感謝。在python中,我該怎麼做? – yanivps 2015-03-25 08:50:00
謝謝。在Python中? – yanivps 2015-03-25 08:50:49
@yanivps:我已經更新了我的答案。 – npinti 2015-03-25 08:56:56
非常感謝您的幫助! – yanivps 2015-03-25 14:03:53