0
これは単純な問題に見えますが、私はここに助けをapprisiateます:***XMLに正規表現を使用して、貪欲なマッチを避ける
は私が(任意の値にすることができる)に「*パスワード値を交換する必要があります「
origunal刺さは、XML
からresived文字列で、問題は、私は出力としてのみの行を取得していることである:
<parameter><value>*****</value></parameter>
しかし、私は唯一のパスワード値を出力として文字列全体を必要とする
は、私が間違っていない場合、あなたは*さんと文字列のパスワードを変更したい事前に
String originalString = "<parameter>" +
"<name>password</name>"+
"<value>my123pass</value>"+
"</parameter>"+
"<parameter>"+
"<name>LoginAttempt</name>"+
"<value>1</value>"+
"</parameter>";
System.out.println("originalString: "+originalString);
Pattern pat = Pattern.compile("<name>password</name><value>.*</value>");
Matcher mat = pat.matcher(originalString);
System.out.println("NewString: ");
System.out.print(mat.replaceFirst("<value>***</value>"));
mat.reset();
は、あなたは涙を流す。つまり、あなたの問題は '。*'は欲張りなので、文字列中の最後の '' 'まで全てが一致しているということです。これは、正規表現を使用しようとする理由の1つが一般的に悪い考えです。 –
星の後に疑問符を追加してください: '。*?'そしてそれがあなたにとって満足できるかどうかを見てください。それは貪欲を嫌悪な行動に変えます。 –
あなたのタイトルは、改行について言及しているので誤解を招きました。問題に改行はありません。それを編集しました。 –