我正在尝试使用正则表达式来匹配以空格分隔的数字。我找不到\b(“单词边界”)的精确定义。我曾假设这-12将是一个“整数词”(由 匹配 \b\-?\d+\b),但似乎这不起作用。我会很感激知道的方式。
\b
-12
\b\-?\d+\b
[我在 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_]。
\w
\W
[0-9A-Za-z_]
因此,在 string"-12"中,它将在 1 之前或 2 之后匹配。破折号不是单词字符。
"-12"