сопоставить слово '90% 'с помощью регулярного выражения - PullRequest
3 голосов
/ 06 мая 2010

Я хочу, чтобы слово '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());
 }

но не повезло.

Может ли кто-нибудь зажечь немного света на этом?

Большое спасибо, Арчи

Ответы [ 2 ]

4 голосов
/ 06 мая 2010

Нет границы слова \b в середине "% "; вот почему ваш шаблон не работает.

Используйте этот шаблон вместо:

"\\b90%"

Смотри также

Есть три разных положения, которые квалифицируются как границы слов:

  • перед первым символом в строке, если первый символ является символом слова.
  • После последнего символа в строке, если последний символ является символом слова.
  • Между двумя символами в строке, где один является символом слова, а другой - не символом слова.

Таким образом, между двумя символами \b существует только между \W и \w (в любом порядке).

Оба '%' и ' ' равны \W, поэтому между ними нет \b в "% ".

1 голос
/ 06 мая 2010

Парены "захватывают" спичку:

/^.*(90%).*$/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...