Как найти строку (содержащую специальный символ) из регулярного выражения с граничным условием

Ниже моя строка, из которой я хочу найти подстроку:

потяните, если {{MySQL}}.EmployeePerson!.City — "Сиэтл", затем {{MySQL}}.EmployeePerson!.StateProvinceID, иначе "0" в качестве StateProvinceID из {{MySQL}}.EmployeePerson!

и вот мое регулярное выражение

Сотрудник!\b

поэтому мне нужно найти "EmployeePerson!" строка, но я не могу получить никакого результата, поэтому, пожалуйста, помогите.

Заранее спасибо.


person Harsh Sharma    schedule 01.09.2017    source источник
comment
Используйте EmployeePerson!, так как ! уже не является символом слова. Или EmployeePerson!\B   -  person Wiktor Stribiżew    schedule 01.09.2017
comment
Спасибо работает нормально........   -  person Harsh Sharma    schedule 01.09.2017
comment
Я не нахожу слово, оканчивающееся на EmployeePerson, которое происходит с '/ b'   -  person Harsh Sharma    schedule 01.09.2017
comment
Чтобы найти EmployeePerson как целое слово, просто используйте \bEmployeePerson\b.   -  person Wiktor Stribiżew    schedule 01.09.2017
comment
Пример: потяните, если {{MySQL}}.CorpEmployeePerson!.City — "Сиэтл", затем {{MySQL}}.Person!.StateProvinceID, иначе "0" в качестве StateProvinceID из {{MySQL}}.EmployeePerson!   -  person Harsh Sharma    schedule 01.09.2017


Ответы (1)


Когда вы ставите \b после !, вам требуется слово char после !.

См. какой границе слова соответствует:

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

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

Таким образом, вам нужно удалить \b, если вам не нужно проверять контекст после !, или заменить \b на \B, для которого потребуется символ, не являющийся словом, или конец строки.

Чтобы найти EmployeePerson! как целое слово, просто используйте

\bEmployeePerson!

or

\bEmployeePerson!\B

или - если вам нужно убедиться, что на обоих концах есть пробелы или начало/конец строки:

(?<!\s)EmployeePerson!(?!\s)

или - если вы хотите убедиться, что на обоих концах нет символов слов:

(?<!\w)EmployeePerson!(?!\w)
person Community    schedule 01.09.2017
comment
Здесь можно редактировать EmployeePerson. Я могу указать специальный символ даже между ними, а также в конце, например: Employe#e@Person! . Как его динамический ввод. - person Harsh Sharma; 01.09.2017
comment
Смотрите еще 2 варианта для вас - person Wiktor Stribiżew; 01.09.2017