1

「#」が後に続かない場合は、char'&'を置き換えたい。たとえば、この文字列"& hello &# world!"では、最初の「&」のみを選択します。

これまでのところ、私はこの正規表現を思いついた:

&[^#]

ただし、これは2文字を選択しますが、アンパサンド文字のみを選択したいと思います。

RegExpGurusからの助けをいただければ幸いです。


ところで。それは重要かもしれません:私はそれをjava replaceAll()で使いたいです。

どうもありがとう、ダモ

4

7 に答える 7

3

ネガティブ先読みの使用:

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

プリント:

& hello &# world!&
于 2012-04-05T14:42:41.293 に答える
2
String s = "&$ &# &s &";
String r = s.replaceAll("&([^#])|(&$)", "&$1");
System.out.println("r = " + r);

プリント:

r = &$ &# &s &
于 2012-04-05T14:40:36.253 に答える
2

必要なのはネガティブな先読みです。この単純なコードを考えてみましょう。

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

これは基本的に、その後に。が続かない&場合は置換することを意味します。 #

于 2012-04-05T14:47:02.733 に答える
1

あなたは先を見据える必要があります

ただし、Javaでテストしていません

于 2012-04-05T14:43:43.630 に答える
1
  • All&#を@#またはその他のありそうもないcharシーケンスに置き換えることができます。
  • すべてを置き換えて、必要なものに置き換えます
  • すべての@#を&#に置き換えます
于 2012-04-05T14:40:03.197 に答える
1

ここでルックアラウンドが適用されると思います。&(?!#)

于 2012-04-05T14:42:43.837 に答える
1

負の先読みを使用できます。

&(?!#)

負の先読み構造は、丸括弧のペアであり、開始括弧の後に疑問符と感嘆符が続きます。先読みの中には、些細な正規表現#があります。

于 2012-04-05T14:42:46.410 に答える