2010-09-01 95 views
4

是否有可能在PHP中獲得所有正則表達式匹配?我需要一個腳本,它將,例如,匹配abc.+並給出了結果:PHP:如何獲得所有正則表達式匹配?

陣列(abcabbcabc

+0

我認爲這是你想要的:http://stackoverflow.com/questions/2617055/how-to-generate-all-permutations-of-a-string-in-php – shamittomar 2010-09-01 20:35:10

+1

這不是什麼正則表達式這意味着要做,而且除了編寫自己的(子集)正則表達式解析器並做一些不同於其他所有正則表達式實現的工作之外,沒有可靠的方法來做到這一點。 – Wrikken 2010-09-01 21:00:12

+0

@shamittomar不,我認爲這很清楚,'。+'只是一個例子。 – Tom 2010-09-01 21:44:56

回答

1

我不知道有一個定義在正則表達式中設置「全部匹配」。

例如,如果你的模式是.+.+?什麼是匹配的第一個.+?什麼是第二個匹配?

的字符串可以匹配特定RE在多種不同的方式結合,並且其子是由RE的不同部分捕獲的可能取決於之類的東西貪婪與非貪婪匹配。但是沒有定義的方式來遍歷所有不同的可能捕獲。你必須大幅改變RE的處理方式。

+0

'+ +''上會abc'給陣列('ab','bc','abc') – Tom 2010-09-01 20:35:30

+0

我理解你的答案,但我仍然希望有一個解決方案,這樣可以回答一個定製庫我禱告:) – Tom 2010-09-01 20:36:31

0

我知道這個問題是有點老了,但仍有可能是人誰需要的答案。

看那flags參數preg_match_all功能

1

的問題是在重疊,要匹配「AB」,也「BC」,你將無法用一個簡單的正則表達式來做到。但請考慮以下幾點。

可以每一個字拆出與任意一行:

preg_match_all('/./', 'abc', $matches); 
str_split('abc'); 

給你:數組( 'A', 'B', 'C')。

和以下將分裂對字符與剩餘的單個字符:

preg_match_all('/.{2}|./', 'abc', $matches); 

給你:陣列( 'AB', 'C');

所以,你可以玩弄的這些組合/變化,以實現自己的結局。

相關問題