使用正则表达式匹配单词'90%'

时间:2010-05-06 11:44:00

标签: java regex

我希望'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的

2 个答案:

答案 0 :(得分:4)

\b中间没有"% "字边界;这就是你的模式失败的原因。

请改用此模式:

"\\b90%"

另见

  

有三种不同的职位符合词边界:

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

因此,在两个字符之间,\b仅存在于\W\w之间(按任意顺序)。

'%'' '都是\W,这就是\b中它们之间没有"% "的原因。

答案 1 :(得分:1)

parens“捕捉”了比赛:

/^.*(90%).*$/g