Как найти слово, содержащее скобку "(" и используя границы слова? - PullRequest
1 голос
/ 12 марта 2011

Я ищу фразу " в успехах (и учиться на их ошибках!) " в большом тексте.Поскольку есть скобки, я использовал кавычку (...), чтобы разрешить это, но я также хочу использовать границы слова "\ b", поэтому эта фраза будет игнорироваться, если она будет найдена в таком тексте "Родственные успехи (и учиться на ихfailures!) ".

Вот мой код:

String phrase = Pattern.quote( "in successes (and learn from their failures!)" );   
Pattern myPattern = Pattern.compile( "\\b" + phrase + "\\b" );  // Use word boundary(\b) = No letters after it.
Matcher myMatcher = myPattern.matcher( bigText );
myMatcher.find();  // Returns false.

Как уже упоминалось, этот код вернет false из-за использования" \ b ".Если я опущу "\ b", то совпадение вернет true. Есть ли способ исправить это, используя 2 условия: quote (...) + "\ b"?

1 Ответ

0 голосов
/ 12 марта 2011

Лучший вариант здесь, на мой взгляд, состоит в том, чтобы отбросить второй \b:

Pattern myPattern = Pattern.compile( "\\b" + phrase);

phrase, заканчивающийся !), которые не являются символами слова, и должны хорошо совпадать для всехнапример: failures!), and more, failures!), failures!)or not

Если вы хотите убедиться, что за ним не следует другая буква, вы можете использовать "\\b" + phrase + "\\B", но я не уверен, что этонужен здесь.

...