我想替换char'&'如果它没有跟'#'。例如,在此字符串"& hello &# world!"
中,我只想选择第一个'&'。
到目前为止,我想出了这个正则表达式:
&[^#]
但是,这会选择2个字符,而我只想选择&符号。
RegExp Gurus的任何帮助都将不胜感激。
顺便说一句
。这可能很重要:我想在java replaceAll()中使用它。
非常感谢, 达莫
答案 0 :(得分:3)
使用否定前瞻:
System.out.println("& hello &# world!&".replaceAll("&(?!#)", "&"));
打印:
& hello &# world!&
答案 1 :(得分:2)
String s = "&$ &# &s &";
String r = s.replaceAll("&([^#])|(&$)", "&$1");
System.out.println("r = " + r);
打印:
r = &$ &# &s &
答案 2 :(得分:2)
您需要的是negative lookahead。考虑一下这个简单的代码:
String str = "& &$ &# &s &#";
str = str.replaceAll("&(?!#)", "&");
// assigns: & &$ &# &s &#
这基本上意味着如果没有跟 &
,则替换#
。
答案 3 :(得分:1)
答案 4 :(得分:1)
我认为Lookaround适用于此处:&(?!#)
答案 5 :(得分:1)
答案 6 :(得分:1)
您需要执行look ahead
虽然
没有在java中测试过