是否有可能讓RegEx回退到字符串的開頭並重新開始匹配?RegEx回退到字符串的開始
這就是爲什麼我問。鑑於下面的字符串,我希望按照該順序捕獲子字符串black
,red
,blue
和,而不考慮主題字符串中的出現順序,並且僅在主題字符串中存在所有子字符串。
$str ='blue-ka93-red-kdke3-green-weifk-black'
所以,對於所有的下面的字符串,正則表達式應該捕獲black
,red
,blue
和(按順序)
'blue-ka93-red-kdke3-green-weifk-black'
'green-ka93-red-kdke3-blue-weifk-black'
'blue-ka93-black-kdke3-green-weifk-red'
'green-ka93-black-kdke3-blue-weifk-red'
我不知道是否有不匹配捕獲組的方式然後回退到字符串的開頭並找到下一個捕獲組。我希望像^.*(?=(black))^.*(?=(red))^.*(?=(blue))^.*(?=(green))
這樣的東西可以工作,但當然^
和lookahead不以這種方式表現。
是否有可能構建這樣的RegEx?
對於上下文,我將在PHP中使用RegEx。
像這樣:(?= *(黑))?['^(?= *(紅色))(?= *(藍色))(= *(綠))'](https://regex101.com/r/qB0bR5/1)?這將要求所有這些關鍵字在字符串中。 –
@WiktorStribiżew是的,就是這樣,把它作爲答案扔掉,我會接受它,謝謝! – DelightedD0D
@WiktorStribiżew:請詳細說明您答案中的每一步。 –