我的正則表達式到目前爲止是:正則表達式從第二個捕獲組中排除,如果符合一定的標準
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+)(_\d+)?$
當我測試的字符串:
UCX_1maxi_holiday2_blah_343
它正確地測試真實可是我最後的拍攝組會永遠不會被達到,因爲它也匹配第二組。 即,如果最後一個下劃線劃定的部分是我希望第三個捕獲組中的那個部分不是第二個的所有數字。否則我想在第二組中使用它。
我想向前看符號和-behinds的,我不認爲他們會爲這個工作,但我會感到驚訝。
我可以做一個單獨的測試來檢查單獨的字符串的結尾,然後根據需要拆分字符串,但是知道好奇心。
我不知道是否有一種方法修改第二捕獲組從重挫結束時,如果它的所有數字
任何人都得到了一些正則表達式柔術這個停止嗎?
這是有效的。我最初對nongreedy的理解需要一些教育。那麼如果知道下一個模式會採用它,那麼非貪婪就會通過吃東西? – jollarvia
一般來說,是的。貪婪的表達通常會更快,因爲非貪婪的匹配需要向前看或回溯(以便「知道」爲模式的下一部分留下什麼);在很多情況下,速度差異永不重要。 – cco