Требуется поддержка при написании регулярных выражений в PCRE - PullRequest
0 голосов
/ 21 апреля 2020

Я не очень хорош в регулярных выражениях и изучаю это ежедневно. У меня возникла проблема, когда я хочу извлечь данные после @ и до >, если они существуют в значении поля, в противном случае они должны быть возвращены в качестве данных.

Пример данных: <abc@xyz.com>, chene.com abc.xyz@xyz.com

Ожидаемый вывод моего регулярного выражения должен быть xyz.com, chene.com и xyz.com.

То, что я написал, это

([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})

, но это не получение всех необходимых данных.

1 Ответ

0 голосов
/ 21 апреля 2020

Я предлагаю захват нужную вам часть, используя

(?:<?[\w.-]+@)?\b(?<from_domain>\w[\w.-]*\.[a-zA-Z]{2,5})\b

См. Демонстрацию regex

Подробности

  • (?:<?[\w.-]+@)? - необязательная группа без захвата, которая соответствует
    • <? - необязательный < char
    • [\w.-]+ - 1+ слов символов , . или - символов
    • @ - @ char
  • \b - граница слова
  • (?<from_domain>\w[\w.-]*\.[a-zA-Z]{2,5}) - группа "from_domain":
    • \w[\w.-]* - слово char, за которым следует 0 или более слов, точек или дефисов
    • \. - точка
    • [a-zA-Z]{2,5} - от двух до пяти букв ASCII
  • \b - граница слова
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...