Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Harsh SharmaОтветов: 1

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

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

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

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

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

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

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

regexboundary

Ответы

Ответ 1 · Community

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

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

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

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

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

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

\bEmployeePerson!

or

\bEmployeePerson!\B

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

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

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

(?<!\w)EmployeePerson!(?!\w)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы