Python Regex - захватить блок пробелов с конца строки - PullRequest
0 голосов
/ 07 мая 2020

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

s = '     This is a string with whitespace on either side     '

strip_regex = re.compile(r'(\s+)(.*)(something to grab end block)')
mo = strip_regex.findall(s)

В качестве вывода я получаю следующее:

[('        ', 'This is a string with whitespace on either side        ')]

Я играл что делать в конце, и лучшее, что я могу получить, это один пробел, но я никогда не смогу просто схватить строку до конца 'side'. Я не хочу использовать символы в стороне, потому что я хочу, чтобы регулярное выражение работало с любой строкой, окруженной пробелами. Я почти уверен, что это потому, что я использую (. *), Который просто захватывает все после первого блока пробелов. Но не могу понять, как остановить его до конца блока пробелов.

Спасибо за любую помощь :)

1 Ответ

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

Если вы хотите удалить пробелы, вы можете использовать вместо них strip (). См .: https://www.journaldev.com/23625/python-trim-string-rstrip-lstrip-strip

Что касается вашего регулярного выражения, если вам нужны как начальные, так и конечные пробелы, я предлагаю сопоставить всю строку, а средняя часть не жадная, например:

s = '     This is a string with whitespace on either side     '
strip_regex = re.compile(r'^(\s+)(.*?)(\s+)$')
mo = strip_regex.findall(s)

Результат:

[('     ', 'This is a string with whitespace on either side', '     ')]

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

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