iidaの日記: sedとjshellの置換 2
日記 by
iida
sed (GNU sed 4.5) で「ab」を「s/a*/A/g;」で置換すると、「AbA」になるが、
jshell (OpenJDK 13+33) で「System.out.println("ab".replaceAll("a*","A"));」すると、「AAbA」になる。
「先頭のaの前にある空文字も置換しました」
と言いたいのかなァ。
sed (GNU sed 4.5) で「ab」を「s/a*/A/g;」で置換すると、「AbA」になるが、
jshell (OpenJDK 13+33) で「System.out.println("ab".replaceAll("a*","A"));」すると、「AAbA」になる。
「先頭のaの前にある空文字も置換しました」
と言いたいのかなァ。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
0文字以上の繰り返し (スコア:0)
*だと0文字以上だから、すき間にマッチさせたくないなら+にするべきでは。
replaceAllに最長一致という考えが無い,と (スコア:0)
「 0個のa, 1個のa, マッチしない文字, 0個のa 」と解釈したんでしょうね。
#自前で正規表現ライブラリ書いたのかなぁ。