「#」が後に続かない場合は、char'&'を置き換えたい。たとえば、この文字列"& hello &# world!"
では、最初の「&」のみを選択します。
これまでのところ、私はこの正規表現を思いついた:
&[^#]
ただし、これは2文字を選択しますが、アンパサンド文字のみを選択したいと思います。
RegExpGurusからの助けをいただければ幸いです。
ところで。それは重要かもしれません:私はそれをjava replaceAll()で使いたいです。
どうもありがとう、ダモ
ネガティブ先読みの使用:
System.out.println("& hello &# world!&".replaceAll("&(?!#)", "&"));
プリント:
& hello &# world!&
String s = "&$ &# &s &";
String r = s.replaceAll("&([^#])|(&$)", "&$1");
System.out.println("r = " + r);
プリント:
r = &$ &# &s &
必要なのはネガティブな先読みです。この単純なコードを考えてみましょう。
String str = "& &$ &# &s &#";
str = str.replaceAll("&(?!#)", "&");
// assigns: & &$ &# &s &#
これは基本的に、その後に。が続かない&
場合は置換することを意味します。 #
あなたは先を見据える必要があります
ただし、Javaでテストしていません
ここでルックアラウンドが適用されると思います。&(?!#)