我希望'90%'与我的字符串匹配“我拥有该公司90%的股份”。
如何为同一个人编写正则表达式?
我试过这样的事情:
Pattern p = Pattern.compile("\\b90\\%\\b", Pattern.CASE_INSENSITIVE
| Pattern.MULTILINE);
Matcher m = p.matcher("I have 90% shares of this company");
while (m.find()){
System.out.println(m.group());
}
但没有运气。
任何人都可以在这上面点灯吗?
非常感谢, Archi的
答案 0 :(得分:4)
\b
中间没有"% "
字边界;这就是你的模式失败的原因。
请改用此模式:
"\\b90%"
有三种不同的职位符合词边界:
- 在字符串中的第一个字符之前,如果第一个字符是单词字符。
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
因此,在两个字符之间,\b
仅存在于\W
和\w
之间(按任意顺序)。
'%'
和' '
都是\W
,这就是\b
中它们之间没有"% "
的原因。
答案 1 :(得分:1)
parens“捕捉”了比赛:
/^.*(90%).*$/g