我在Java1.6中使用Java正则表达式(尤其是解析数值输出),找不到\b
(“单词边界”)的精确定义。我本来以为-12
是一个“整型词”(与\b\-?\d+\b
匹配),但似乎这不起作用。我很高兴知道如何匹配空格分隔的数字。
示例:
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
在大多数regex方言中,单词边界是介于
\w
和\W
(非单词字符)之间的位置,或者如果字符串以单词字符([0-9A-Za-z_]
)开始或结束,则位于字符串的开始或结束处。因此,在字符串
"-12"
中,它将在1之前或2之后匹配。破折号不是单词字符。单词边界是一个位置,它的前面有一个单词字符,后面没有一个,或者后面有一个单词字符,前面没有一个。
单词边界可以出现在以下三个位置之一:
单词字符是字母数字;减号不是。 取自Regex Tutorial。
相关问题 更多 >
编程相关推荐