Разделение слов в Java с помощью java.util.regex - PullRequest
1 голос
/ 15 ноября 2011

У меня есть такой текст:

Язык C% y% широко используется сегодня в приложениях, работающих развитие системы и встроенных систем, и ее влияние проявляется в большинство современных языков программирования. UNIX также был влиятельным, установление% y% концепций и принципов, которые теперь являются заповедями вычислений.% р%

Текст имеет некоторые ненужные индикаторы:% y% и% p%

Я использую регулярное выражение для разделения слов, используя это регулярное выражение:

Pattern p = Pattern.compile("[a-zA-Z]+");

Я мог бы разделить все слова, но это регулярное выражение приносит буквы "у" и "р". Как я могу игнорировать эти показатели?

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Вы можете использовать некоторую предварительную обработку, чтобы удалить все ненужные символы перед выполнением основной обработки.Примерно так должно работать:

string.replaceAll("%y%|%p%","")
1 голос
/ 15 ноября 2011

Или вы можете рассматривать индикаторы как отдельные слова и разбирать их позже:

Pattern p = Pattern.compile("[a-zA-Z]+|%[a-z]%");

Кстати, вы не должны использовать [a-zA-Z] для текстов на естественном языке - даже английский текст может содержать такие слова, как café, имена типа Björn и т. Д. Для этого java.util.regex.Pattern поддерживает предопределенные классы символов для букв \p{L} наряду с \p{Ll} (только строчные буквы) и \p{Lu} (только заглавные буквы), которые будут соответствовать такимслова просто отлично.

0 голосов
/ 15 ноября 2011

Если единственными символами являются «% y%» и «% p%», вы можете упростить задачу и просто удалить их перед выполнением регулярного выражения.

, например

myString = myString.replaceAll("%y%|%p%", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...