我正在尝试使用正则表达式来匹配空格分隔的数字。
我找不到 \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_]
) 开头或结尾。
因此,在字符串 "-12"
中,它将匹配 1 之前或 2 之后。破折号不是单词字符。
关于regex - 正则表达式中的单词边界是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324676/