2012-04-05 14 views
1

如果沒有後跟'#',我想替換字符'&'。例如在這個字符串"& hello &# world!"我想只選擇第一個'&'。正則表達式 - 如果其後跟另一個字符,則只選擇一個字符

到目前爲止,我想出了這個正則表達式:

&[^#] 

然而,這種選擇2個字符,而我只想選擇符號字符。

RegExp Gurus的任何幫助,將不勝感激。


順便說一句。這可能很重要:我想在java中使用replaceAll()。

非常感謝, 達摩

回答

3

使用負前瞻:

System.out.println("& hello &# world!&".replaceAll("&(?!#)", "&")); 

打印:

& hello &# world!& 
+0

接受,因爲這是第一個指向負面預測的答案。對所有其他答案+1。多謝你們。 – 2012-04-05 15:02:58

1
  • 您可以通過@#或其他任何不可能的字符序列的replaceAll &#。
  • 由你想
  • 什麼替換所有&和&#回所有替換@#
+0

+1不錯的一個 - 在盒子外面思考。 :-) – 2012-04-05 14:41:30

2
String s = "&$ &# &s &"; 
String r = s.replaceAll("&([^#])|(&$)", "&$1"); 
System.out.println("r = " + r); 

打印:

r = &$ &# &s & 
1

可以使用negative lookahead

&(?!#) 

負先行構建體是所述一對圓括弧的,與開口托架後跟一個問號和感嘆號。在lookahead內部,我們有微不足道的正則表達式#。

2

你需要的是negative lookahead有沒有在Java中進行了測試。考慮這個簡單的代碼:

String str = "& &$ &# &s &#"; 
str = str.replaceAll("&(?!#)", "&"); 
// assigns: & &$ &# &s &# 

這基本上意味着取代&如果後面沒有#

相關問題