正規表現で空白をマッチさせるときは\sじゃなくて\hのほうが良いのかもしれない。

正規表現で空白文字とマッチさせるときは\sを使用することが多いと思いますが、本当に求めているものは\hなのかもしれません。

  • \s 空白文字: [\t\n\x0B\f\r]
  • \h 水平方向の空白文字: [ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]

\sはasciiで定義されている空白っぽい文字(改行含む)にマッチしますが、\hはUnicodeで定義されている空白っぽい文字(改行を含まない)にマッチします。 歴史的経緯で\sを使う人も多いですが、改行含んでマッチさせたい場合なんてほとんどないのだから\hを使いましょう。

Java正規表現の一覧は以下から(※ほぼPerl互換)

docs.oracle.com

なお: