\s に対する Java の正規表現マッチングがどのように機能するかについて、私は何かを理解していません。以下の単純なクラスでは、\s は [少なくとも] $ と * に一致するようで、気になるところです。\s を含めないと、各単語の最後の文字が切り捨てられます。そして、どちらの正規表現も文字列の末尾 " をキャッチしていないようです。誰かが何が起こっているのか説明してくれませんか?または、役に立つリソースを教えてくれますか?ありがとう.
public class SanitizeText {
public static void main(String[] args)
{
String s = "123. ... This is Evil !@#$ Wicked %^&* _ Mean ()+<> and ;:' - Nasty. \\ =\"";
String t = "123. ... This is Evil !@#$ Wicked %^&* _ Mean ()+<> and ;:' - Nasty. \\ =\"";
s = s.replaceAll(".[^\\w\\s.]", " "); // Does the \s match non-space chars? Sees like at least $ and * are matched.
s = s.replaceAll(" {2,}", " ");
t = t.replaceAll(".[^\\w.]", " "); // Why does this regex chopping the trailing char of each word ??
t = t.replaceAll(" {2,}", " ");
System.out.println ("s: " + s);
System.out.println ("t: " + t);
}
}
// produces:
// s: 123. ... This is Evil $ Wicked * _ Mean and Nasty . "
// t: 123 .. Thi i Evi Wicke Mea an Nast "