2015-03-13 2 views
-1

Я использую регулярное выражение для соответствия слова (и не совпадает встроенные строки), который выглядит как выглядит следующим образом:Matching регулярных выражений Java, когда слово содержит встроенное и

word.trim().matches("(\\w+)(\\.|\\?|\\!|\\<)?"); 

Это прекрасно работает, если слово это строка, как это слово = «синий»;

Но это терпит неудачу, если слово имеет встроенный &, или любой специальный символ, как этот
слово = «А & Р»; или это слово = "A-P";

Как я могу изменить свое регулярное выражение, так что он улавливает некоторые специальные символы, такие как «&» и «-»

+0

специальные символы должны находиться между ними. Правильно? – Braj

+2

'word.trim(). Matches (" ([- & \\ w] +) ([.?

+1

'/ ([\ w & -] +) ([.?! <])?/' – Biffen

ответ

1

Это кажется про самый простой:

str.matches("(?i)[a-z]+([-&][a-z]+)?[.!?<]?") 

отметить также повторное фразировки вашего чередования в класс символов, поскольку каждый термин был единственным символом и являлся классом символов, вам даже не нужно избегать точки или «?».

(?i) означает «игнорировать регистр».

Я не уверен в том, что «<» является законным «словом, заканчивающимся»; вы можете убрать его из регулярного выражения.

Смежные вопросы