Игнорировать пустые строки [\ t \ s] пробелы или табуляции - PullRequest
0 голосов
/ 28 декабря 2018

Итак, у меня есть это регулярное выражение:

https://regex101.com/r/Puggjm/5

И я в основном пытаюсь игнорировать все номера строк, за которыми следуют пробел или ничего.Мое текущее регулярное выражение: ^[\d\s].+(?:[A-Z\s]*)*$

Номера строк, за которыми ничего не стоит, на самом деле не игнорируются.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Вы можете использовать отрицательный прогноз, чтобы утверждать, что ниже не 1+ цифр, а затем 0+ раз символ пробела:

^(?!\d+\s*$)\d+.+$
  • ^ Начало строки
  • (?!\d+\s*$) Отрицательный взгляд, чтобы утверждать, что справа - это не 1+ цифр, за которыми следует 0+ символов пробела и конца строки
  • \d+.+ Совпадение 1+ раз цифры и1+ раз любой символ
  • $ Конец строки

См. regex demo | Python demo

Пример использования findall :

import re
regex = r"^(?!\d+\s*$)\d+.+$"
test_str = ("Here goes some text. {tag} A wonderful day. It's soon cristmas.\n"
    "2 Happy 2019, soon. {Some useful tag!} Something else goes here.\n"
    "3 Happy ending. Yeppe! See you.\n"
    "4\n"
    "5 Happy KKK!\n"
    "6 Happy B-Day!\n"
    "7\n"
    "8 Universe is cool!\n"
    "9\n"
    "10 {Tagish}.\n"
    "11\n"
    "12 {Slugish}. Here goes another line. {Slugish} since this is a new sentence.\n"
    "13\n"
    "14 endline.")
print(re.findall(regex, test_str, re.MULTILINE));

Если после цифры есть точка, вы можете использовать:

^(?!\d+\.\s*$)\d+.+$

0 голосов
/ 28 декабря 2018

Ваше регулярное выражение соответствует только 1 цифре, замените его на , это упрощенная версия :

^\d+\b.+$
...