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

2024-05-19 03:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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

Tags: truestringmatcherplusjavaout单词system
3条回答

在大多数regex方言中,单词边界是介于\w\W(非单词字符)之间的位置,或者如果字符串以单词字符([0-9A-Za-z_])开始或结束,则位于字符串的开始或结束处。

因此,在字符串"-12"中,它将在1之前或2之后匹配。破折号不是单词字符。

单词边界是一个位置,它的前面有一个单词字符,后面没有一个,或者后面有一个单词字符,前面没有一个。

单词边界可以出现在以下三个位置之一:

  1. 在字符串的第一个字符之前,如果第一个字符是单词字符。
  2. 在字符串的最后一个字符之后,如果最后一个字符是单词字符。
  3. 在字符串中的两个字符之间,其中一个字符是单词字符,另一个不是单词字符。

单词字符是字母数字;减号不是。 取自Regex Tutorial

相关问题 更多 >

    热门问题