如果后面没有'#',我想替换字符'&'。例如,在这个字符串中"& hello &# world!"
,我只想选择第一个“&”。
到目前为止,我想出了这个正则表达式:
&[^#]
但是,这选择了 2 个字符,而我只想选择 & 字符。
RegExp 大师的任何帮助将不胜感激。
顺便提一句。这可能很重要:我想在 java replaceAll() 中使用它。
非常感谢,达摩
使用负前瞻:
System.out.println("& hello &# world!&".replaceAll("&(?!#)", "&"));
印刷:
& hello &# world!&
你需要的是负前瞻。考虑这个简单的代码:
String str = "& &$ &# &s &#";
str = str.replaceAll("&(?!#)", "&");
// assigns: & &$ &# &s &#
&
这基本上意味着如果没有后跟 则替换#
。
String s = "&$ &# &s &";
String r = s.replaceAll("&([^#])|(&$)", "&$1");
System.out.println("r = " + r);
印刷:
r = &$ &# &s &
我认为Lookaround适用于此:&(?!#)
你需要向前看
虽然没有在java中测试过