повторное совпадение с первым появлением символов в скобках - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь захватить первую группу символов перед одним или несколькими подчеркиваниями или тире в строке, используя re.sub в Python 3.7. Моя текущая функция: re.sub(r'(\w+)[-_]?.*', r'\1', x).

Пример строки:

x = 'CAM14_20190417121301_000'
x = 'CAM16-20190417121301_000'

Фактический объем производства:

CAM14_20190417121301_000
CAM16

Желаемый вывод:

CAM14
CAM16

Почему это работает, когда после первой группы есть тире, но не подчеркивание? Я также пытался re.sub(r'(\w+)_?.*', r'\1', x) попытаться заставить его поймать подчеркивание, но это вернуло тот же результат. Я хотел бы, чтобы код был достаточно гибким, чтобы поймать либо.

1 Ответ

1 голос
/ 18 апреля 2019

\w соответствует подчеркиванию, используйте вместо этого следующее регулярное выражение:

re.sub(r'([a-zA-Z0-9]+)[-_]?.*', r'\1', x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...