4
我想斷言一個字符串包含兩個相同的子字符串。如何在正則表達式中定義循環?
我想這正則表達式:[A-ZA-Z]{2}
我想檢測一下:
AZAZ
CUCU
PIPI
但這個表達式只檢查,如果有4個大寫的字母排成一列,所以
ABCD --> it's good and it shouldn't be
我真的很抱歉,如果這不清楚,我不知道如何編寫正則表達式來聲明重複。
我想斷言一個字符串包含兩個相同的子字符串。如何在正則表達式中定義循環?
我想這正則表達式:[A-ZA-Z]{2}
我想檢測一下:
AZAZ
CUCU
PIPI
但這個表達式只檢查,如果有4個大寫的字母排成一列,所以
ABCD --> it's good and it shouldn't be
我真的很抱歉,如果這不清楚,我不知道如何編寫正則表達式來聲明重複。
使用Python,你可以做到以下幾點:
p="((?P<two_chars>[A-Z]{2})(?P=two_chars))"
s="AZAZABCDCUCUPIPI"
re.findall(p, s)
[('AZAZ', 'AZ'), ('CUCU', 'CU'), ('PIPI', 'PI')]
,然後從列表中提取所需的元素。或者你可以做得更快:
[k for k,v in re.findall(p,s)]
['AZAZ', 'CUCU', 'PIPI']
希望它有幫助。
那麼你使用什麼語言/風味?基本上你需要使用反向引用,這在所有的風格中都不被支持。在PCRE/PHP中,你可以使用'([A-Z] {2})\ 1'。 [看它工作](http://regex101.com/r/xR2iD0) – HamZa
@HamZa我還沒有看到任何不支持反向引用的味道。你知道任何?不能在正則表達式中使用反向引用真的很奇怪。 –
@RohitJain我現在無法想出一個,但是花了這麼多時間在SO之後,我遇到了OP使用某個系統/程序的問題,在這個系統/程序中不支持「正常」的正則表達式功能。如果我的記憶不欺騙我,那麼在某種語言中不支持反向引用(在匹配中),但我不記得哪一個...... – HamZa