我想下面的字符串相匹配的結束匹配:貪婪的性格在串
controller1/action1/something
用下面的正則表達式:
(?P<controller>[[:alnum:]]+)/(?P<action>[[:alnum:]]+)/(.*)
出於某種原因,它不找到字符串的最後部分:something
。但是,它的工作原理,當我改變*
到+
在表達式的末尾:
(?P<controller>[[:alnum:]]+)/(?P<action>[[:alnum:]]+)/(.+)
隨着該正則表達式它確實找到something
字符串。但我想使用.*
(或.*?
),因爲我希望這個正則表達式在最後沒有任何東西時也能成功。
所以它也應該成功當字符串是:controller1/action1/
那麼,爲什麼不將其與(.*)
或(.*?)
工作,但與.+
的作品?差異應該簡單地說是第一個說「零個或多個字符」和最後一個「一個或多個」。我只是想檢查「零或更多」。
PS。由於複雜的問題,我不想使用^
和$
來表示字符串的開頭和結尾。簡而言之,這種模式並不總是出現在字符串末尾。
看起來像它的作品對我說:[演示](HTTPS ://www.debuggex.com/r/kTVfFXXl_4cva7Jo) – Shai
它也適用於我,[Another Demo](http://regex101.com/r/qG7sG5)。 –
也許發佈您的PHP代碼,並且您正在測試的完整輸入字符串的示例 – Shai