1. ホーム
  2. regex

[解決済み] 正規表現におけるワードバウンダリとは何ですか?

2022-03-04 19:01:15

質問

正規表現を使って、スペースで区切られた数字にマッチさせようとしています。 の正確な定義がわかりません。 \b ("word boundary")です。 私は、次のように考えていました。 -12 は "整数語" になります(quot;整数語にマッチするのは \b\-?\d+\b )ですが、これはうまくいかないようです。 .NETの方法を教えていただけるとありがたいです。

[Java 1.6でJava正規表現を使用しています]。

Pattern pattern = Pattern.compile("\\s*\\b\\-?\\d+\\s*");
String plus = " 12 ";
System.out.println(""+pattern.matcher(plus).matches());

String minus = " -12 ";
System.out.println(""+pattern.matcher(minus).matches());

pattern = Pattern.compile("\\s*\\-?\\d+\\s*");
System.out.println(""+pattern.matcher(minus).matches());

これが返ってくる。

true
false
true

解決方法は?

単語境界は、ほとんどの正規表現では、次の間の位置です。 \w\W (非単語文字)、または文字列の最初と最後がそれぞれ単語文字 ( [0-9A-Za-z_] ).

そのため、文字列の中で "-12" ダッシュは単語文字ではありません。