Исключая несколько критериев в конце строки - PullRequest
2 голосов
/ 23 января 2020

Мне нужна помощь с приведенными ниже правилами регулярных выражений

  • Должен начинаться с Include(
  • Должен заканчиваться s)
  • Не должно иметь ) в середине
  • Я бы хотел исключить результаты, которые заканчиваются Address), Status) или Process)

У меня есть первые три правила, работающие с следующий RegEx:

(?=Include\().[^\)]*(s\))

Но каждый раз, когда я пытаюсь улучшить его, чтобы включить правило # 4, я полностью нарушаю RegEx и не получаю совпадений. Вот ссылка с примером того, что я получил до сих пор, в настоящее время у него есть 7 совпадений, но есть два ложных срабатывания, которые исключило бы правило 4, если бы я смог реализовать его, поэтому я ожидаю только 5 совпадений: https://regexr.com/4snsb

Он должен удовлетворять следующим 5 строкам:

Include(x => x.ClientBuyerAutoCharges)
Include(x => x.ClientContacts)
Include(x => x.ClientContactCommsTypes)
Include(x => x.ClientInspectionValues)
Include(x => x.ClientUnitTypeVATStates)

1 Ответ

1 голос
/ 23 января 2020

Вы можете использовать

Include\([^()]*s\)(?<!Address\)|Status\)|Process\))

См. Демоверсию regex

Подробности

  • Include\( - Include( текст
  • [^()]* - 0 или более символов, отличных от ( и )
  • s\) - s) текст
  • (?<!Address\)|Status\)|Process\)) - отрицательный lookbebind, который не соответствует совпадению, если непосредственно слева от текущего местоположения есть Address), Status) или Process).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...