regex - 正则表达式中的单词边界是什么?

标签 regex word-boundary

我正在尝试使用正则表达式来匹配空格分隔的数字。 我找不到 \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/53171985/

相关文章:

php - 初学者阅读正则表达式

正则表达式,我只是不明白

python - regex.WORD 如何影响\b 的行为?

java - 基于正则表达式的链接未按预期工作

用于匹配 anchor 否定和字符串的正则表达式

C#正则表达式提取键值

c - 编译器中的抽象语法树 : how exactly to represent a function?

java -\G 在 PCRE 后视中如何工作

java - 如何使用 String 的 replaceAll 在某些字符前面不替换

Java 正则表达式排序\b