如果沒有後跟'#',我想替換字符'&'。例如在這個字符串"& hello &# world!"
我想只選擇第一個'&'。正則表達式 - 如果其後跟另一個字符,則只選擇一個字符
到目前爲止,我想出了這個正則表達式:
&[^#]
然而,這種選擇2個字符,而我只想選擇符號字符。
RegExp Gurus的任何幫助,將不勝感激。
順便說一句。這可能很重要:我想在java中使用replaceAll()。
非常感謝, 達摩
如果沒有後跟'#',我想替換字符'&'。例如在這個字符串"& hello &# world!"
我想只選擇第一個'&'。正則表達式 - 如果其後跟另一個字符,則只選擇一個字符
到目前爲止,我想出了這個正則表達式:
&[^#]
然而,這種選擇2個字符,而我只想選擇符號字符。
RegExp Gurus的任何幫助,將不勝感激。
順便說一句。這可能很重要:我想在java中使用replaceAll()。
非常感謝, 達摩
使用負前瞻:
System.out.println("& hello &# world!&".replaceAll("&(?!#)", "&"));
打印:
& hello &# world!&
+1不錯的一個 - 在盒子外面思考。 :-) – 2012-04-05 14:41:30
String s = "&$ &# &s &";
String r = s.replaceAll("&([^#])|(&$)", "&$1");
System.out.println("r = " + r);
打印:
r = &$ &# &s &
我覺得Lookaround適用於這裏:&(?!#)
你需要做一個look ahead
雖然
你需要的是negative lookahead有沒有在Java中進行了測試。考慮這個簡單的代碼:
String str = "& &$ &# &s &#";
str = str.replaceAll("&(?!#)", "&");
// assigns: & &$ &# &s &#
這基本上意味着取代&
如果後面沒有#
。
接受,因爲這是第一個指向負面預測的答案。對所有其他答案+1。多謝你們。 – 2012-04-05 15:02:58