Как подстрока в RegExp? - PullRequest
0 голосов
/ 27 апреля 2020

Кто-нибудь знает, как узнать подстроку в регулярном выражении? В настоящее время я выполняю профилирование данных и вижу другой формат, например:

EB0000000

EB00000000PHL00000000F00000000

P0000000A

Когда я использовал свой выражение: \b(?:[A-Z]{1}\d{7}[A-Z]{1}|[A-Z]{1}\d{7,8}|[A-Z]{2}\d{6}|[A-Z]{2}\d{7,8})\b

Я захватил первый и последний образец, но второй выглядит некорректно, но я все еще хочу захватить EB и эти 8 цифр перед PHL. Возможно ли это в регулярном выражении? ТИА

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Возможно, но вы можете изменить порядок альтернатив, чтобы поместить наиболее конкретный c в начало, а затем удалить границу слова в конце.

Обратите внимание, что вы можете опустить {1}

\b(?:[A-Z]{2}\d{7,8}|[A-Z]\d{7}[A-Z]|[A-Z]\d{7,8}|[A-Z]{2}\d{6})

По частям

  • \b Граница слова
  • (?: Группа без захвата
    • [A-Z]{2}\d{7,8} Матч 2 времена AZ и 7-8 цифр
    • | Или
    • [A-Z]\d{7}[A-Z] Соответствие AZ, 7 цифр и AZ
    • | Или
    • [A-Z]\d{7,8} совпадение AZ и 7-8 цифр
    • | или
    • [A-Z]{2}\d{6} совпадение 2 раз AZ и 6 цифр
  • ) Закрыть группу

Regex demo

1 голос
/ 27 апреля 2020

Почему так сложно писать? Может быть, рядом есть строки, которые не должны попадать в выделение?

\b[A-Z\d]{8,}\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...