Я пытаюсь совместить 2 шаблона, в которых есть строка Copy-Of. Я использую границы слов \ b ... \ b для моего соответствия, но у меня проблема.Языковые границы Java Regex \ bbackup \ b
string = "This is a backup-Copy-Of your CD can you make a Copy-Of it?"
Теперь я хочу, чтобы соответствовать резервного копирования Copy-Of и Copy-Of
if (Pattern.compile("\\bCopy-Of\\b").matcher(Parameter).find()) {
Это будет соответствовать как Copy-Of из (резервного копирования Copy-Of) и Copy-само по себе.
Программа по-прежнему работает до этой точки, но когда я добавляю строку ниже ее ошибок.
if (Pattern.compile("\\bbackup-Copy-Of\\b").matcher(Parameter).find()) {
И если я удалил первый матч шаблон ("\ bCopy-Of \ Ъ") и оставить только 2-й образец ("\ bbackup-Copy-Of \ Ъ"), она работает без каких-либо проблем.
So What is the correct way to match for backup-Copy-Of and Copy-Of.
Результаты должны быть:
1 match for backup-Copy-Of
1 match for Copy-Of
Жаль, что была опечатка, я обновил вопрос. по какой-то причине \\ bb ломает программу, и если я ее сменил на \\ b \ b, она будет работать, но, конечно, ничего не будет. – Moe
Вы проверили 'up' в' backup'? 'Pattern.compile (" \\ bback (?: Up)? - Copy-Of \\ b "). Matcher (Параметр);' demo https://regex101.com/r/wG7aS9/2 –
это не проблема с границами слов .. вы можете попробовать удалить 'up' как' Pattern.compile («\\ bback-Copy-Of \\ b»). matcher (Parameter); ' –