为了账号安全,请及时绑定邮箱和手机立即绑定

在regexes中,单词边界是什么?

在regexes中,单词边界是什么?

Helenr 2019-06-19 14:33:48
在regexes中,单词边界是什么?我正在使用Java1.6中的Javaregexes(除其他外,用于解析数字输出),无法找到\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());返回:truefalsetrue
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

在大多数regex方言中,单词边界是介于\w\W(非字符),如果字符串的开头或结尾分别以单词字符([0-9A-Za-z_]).

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


查看完整回答
反对 回复 2019-06-19
?
温温酱

TA贡献1752条经验 获得超4个赞

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

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

单词字符是α-数字;减号不是。摘自Regex教程.


查看完整回答
反对 回复 2019-06-19
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我说的是\b-样式regex边界实际上是这里.

很短的故事是他们.条件性..他们的行为取决于他们的近在咫尺。

# same as using a \b before:(?(?=\w) (?<!\w)  | (?<!\W) )# same as using a \b after:(?(?<=\w) (?!\w)  | (?!\W)  )

有时候那不是你想要的。详见我的另一个答案。


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信