我需要一個正則表達式,它將用偶數個斜槓替換奇數個斜槓,同時保持偶數個斜線不變。
例如:Java中的正則表達式替換奇數的斜槓
- 測試/ 123 - >測試// 123
- 測試// 123 - >測試// 123
- 測試/// 123 - >測試////// 123
我需要一個正則表達式,它將用偶數個斜槓替換奇數個斜槓,同時保持偶數個斜線不變。
例如:Java中的正則表達式替換奇數的斜槓
Pattern p = Pattern.compile("(?<!/)/(//)*(?!/)");
Matcher m = p.matcher(inputString);
String outputStr = m.replaceAll("$0$0");
(?<!/)
確保沒有斜槓賽前權利;/(//)*
匹配奇數的斜槓;(?!/)
確保比賽結束後沒有斜線。替換字符串是$0$0
,它將匹配的斜槓加倍。
我已經在您的輸入上測試了它,它的工作原理與您的規格完全相同。
考慮在我的回覆中使用負向lookahead/lookbehing。比使用積極的表達式和手動否定它們更容易。 – 2012-02-21 15:09:31
@ Anony-Mousse:好的建議,謝謝! – NPE 2012-02-21 15:11:47
將(?<!/)((//)*/)(?!/)
替換爲任何你想要的。
問題是取代它與偶數/ /取決於捕獲的字符串。這個正則表達式正如我試圖捕獲任何偶數/ – helios 2012-02-21 15:03:53
任何奇數。你可以很容易地用兩倍的斜線替換它,或者n + 1。 – 2012-02-21 15:08:34
我只需要編寫正則表達式的幫助。像這樣:[/] {奇怪]與[/] {奇} – Wael 2012-02-21 14:57:30