2016-03-08 90 views
0

我試圖編寫一個正則表達式來檢測兩個字符串之間是否存在4個非空白字符的任意組合。它們將永遠由逗號隔開。舉個例子:查找兩個字符串之間的任何4個連續字符

Labrador, Matador ---> this would match 'ador'. 
Mississippi, Missing ---> This would match 'Miss' and 'issi' 
Corporate, Corporation ---> This would match 'Corp' , 'orpo' , 'rpor' , 'pora' and 'orat' 

它已經很難找到類似這樣的東西,我發現最近曾表示,這是不可能的正則表達式。這絕對是棘手的,但我想確保在尋找不同的解決方案之前實際上是不可能的。

如果不可能,有人會解釋爲什麼嗎?

回答

2

對於重疊的匹配,可以用前瞻:

/(?=(\S{4}).*,.*\1)/ 

注意,還有一個issi可能在第二行的例子。

測試:https://regex101.com/r/rV3gN9/2

+0

謝謝!雙重簽證的好消息。過去對於我來說,前瞻已經非常棘手。 – Joshua

+0

不客氣,如果這對你有幫助,我很高興。無論何時需要重疊匹配,搜索都是必要的,否則匹配的字符會移動搜索引擎的搜索點。看看周圍有零寬度,所以它的作品。 – sidyll

1

您可以使用此前瞻基於正則表達式:

(?=([a-zA-Z]{4})[a-zA-Z]*, *[a-zA-Z]*\1) 

RegEx Demo

雖然它會找到issi兩次因爲Mississippi有2個實例化的issi

相關問題