Регулярное выражение для получения всего между двумя символами / строками - PullRequest
0 голосов
/ 20 сентября 2019

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

  1. LTE_LTE_FSD9167__P_Airport1 Я хочу извлечь 7-значный код сайта (FSD9167) из приведенной выше строки.

  2. RUR1251__S_KhooNaiWala Я хочу извлечь 7-значный код сайта (RUR1251) из приведенной выше строки.

Для случая LTE_LTE я написал LTE_LTE_([^_;]+).*, но этовыделяет всю строку, включая не только обязательный текст.

Ответы [ 3 ]

0 голосов
/ 20 сентября 2019

Вы не предоставили никаких правил о том, как может выглядеть код.Я заметил, что оба кода, которые вы предоставили в примере, имеют 3 буквы, за которыми следуют 4 цифры.Я сделал правило более общим: минимум 2 буквы, за которыми следуют как минимум 3 цифры.

Регулярное выражение:

[a-zA-Z]{2,}\d{3,}

Тест здесь .

0 голосов
/ 20 сентября 2019

Поскольку вы хотите сопоставить только эти 2 строки, используйте:

(?<![A-Z0-9])[A-Z0-9]{7}(?![A-Z0-9])

Объяснение:

(?<![A-Z0-9])       # negative lookbehind, make sure we haven't alphanum before
[A-Z0-9]{7}         # 7 alphanumerics
(?![A-Z0-9])        # negative lookahead, make sure we haven't alphanum after

Демо

0 голосов
/ 20 сентября 2019

Вы можете использовать что-то вроде этого:

^(?:LTE_LTE_)?(\S{7})\S*$ /gm

Это захватывает семь непробельных символов либо в начале (случай 2), либо сразу после LTE_LTE_

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...