Python Регулярное выражение не работает для данного шаблона - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь извлечь шаблон из строки, используя python регулярное выражение. Но он не работает с приведенным ниже шаблоном

headerRegex = re.compile(r'^[^ ]*\s+\d*') 
        mo = headerRegex.search(string) 
        return mo.group()

Мое требование - это регулярное выражение, которое должно начинаться с чего угодно, кроме пробела, за которым следует один или несколько пробелов, а затем цифры встречаются один или несколько

Example
i/p: test  7895  => olp:7895(correct)
i/p:  8545 ==> Not matching
i/p: @#@#  3453 ==>3453

Могу ли я узнать, чего не хватает в моем регулярном выражении для выполнения этого требования?

1 Ответ

1 голос
/ 25 мая 2020

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

Измените квантификаторы на +, чтобы они соответствовали 1+ раз, и если вы не хотите чтобы соответствовать символам новой строки, используйте вместо этого [^\S\r\n]+.

Если разрешено только это точное совпадение, добавьте якорь $, чтобы подтвердить конец строки, или добавьте \Z, если после разрешенного символа новой строки нет.

^\S+[^\S\r\n]+\d+$
  • ^ Начало строки
  • \S+ Сопоставление 1+ раз с символом без пробелов
  • [^\S\r\n]+ 1+ совпадение с символом с пробелом, кроме символов новой строки
  • \d+ Соответствие 1+ цифр
  • $ Конец строки

Демонстрация регулярного выражения

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