我想做一個正則表達式來找出第三個分隔符「/」,如果找到匹配,然後抓住它之前的整個句子,並刪除休息。正則表達式不爲我工作
black/white/green/blue/delta/orange/yellow/pink...(n)
結果應該是
black/white/green
我想這(.*(\/{2,3}))
但沒有奏效。
我想做一個正則表達式來找出第三個分隔符「/」,如果找到匹配,然後抓住它之前的整個句子,並刪除休息。正則表達式不爲我工作
black/white/green/blue/delta/orange/yellow/pink...(n)
結果應該是
black/white/green
我想這(.*(\/{2,3}))
但沒有奏效。
您的(.*(\/{2,3}))
匹配任何符號(可能不是換行符),然後匹配2或3個/
符號,將整個匹配捕獲到組1中,並將正斜槓匹配到組2中。它可以在較大字符串,但它只是從字符串的開始到符合最後2或2個符號的符號有效匹配。
您可以使用
^((?:[^\/]*\/){3}).*
並與$1
逆向引用替換。
根據輸入和正則表達式引擎,你可能需要一個DOTALL修改爲.
匹配換行了。
請注意,您可以使用更簡單的^((?:[^\/]*\/){3})
代替匹配您的子字符串。另外,如果您有權訪問原始編程代碼,則可以將字符串拆分爲/
,取前3個元素,然後使用/
加入。
試試這個:
^((?\w+ \/){3})
說明:
(\ w + /?) - 它匹配白色 /(_是空間,只是標記在這裏),但由於第一個字是在該行的開始,它不包含單詞之前的空格,所以'?'第一個空間後,這意味着可選。 {3}表示找到這個組白色 /發生3次(不少於,不大於) 所有這一切都以^()括起來,不符合f.e.在該行中間發生3次。
我沒想到會有這麼快速的回答。如果你也可以解釋你的代碼,我會很感激。只是上面寫的那個。 – Mask
這是什麼意思*沒有工作*? –
你好,我通過刪除最後一個節點「/」對我的結果進行了修正。你能幫我解決嗎?我嘗試了我自己,但沒有成功。 – Mask
我想你想得到你想要的而不是斜線的子串。嘗試'^([^ \ /] *(?:\/[^ \ /] *){2})。*'。 –