有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

共 (3) 个答案

  1. # 1 楼答案

    我想解释一下Alan Moore的答案

    A word boundary is a position that is either preceded by a word character and not followed by one or followed by a word character and not preceded by one.

    假设我有一个字符串“This isacat,she isawesome”,我应该替换所有出现的字母“a”,只有当这个字母存在于单词的边界处时,也就是说,“cat”中的字母a不应该被替换

    因此,我将执行regex(在Python)作为

    re.sub(r"\ba","e", myString.strip())//用e替换a

    因此,输出将是

    这是ecate她是ewesome

  2. # 2 楼答案

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

  3. # 3 楼答案

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

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

    单词字符是字母数字;负号不是。 摘自Regex Tutorial