Найти с помощью регулярного выражения подстроку, если да, отделить, если от основной строки в Python - PullRequest
3 голосов
/ 19 июня 2019

у меня есть строка, как показано ниже

strng ="Fiscal Year Ended March 31, 2018 Total Year (in $000's)"

, если в указанной строке есть подстрока года (например, 2014,2015 и т. Д.), Выделите подстроку year и остальные.

для получения 'года' я использую

re.findall(r"\b20[012]\d\b",strng)

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

year_substring --> '2018'
rest --> 'Fiscal Year Ended March 31, Total Year (in $000's)'

есть ли способ получить оба с помощью регулярных выражений?

1 Ответ

2 голосов
/ 19 июня 2019

Вы можете захватить 3 части, строку до года, год и остальные, а затем объединить группы 1 и 3, чтобы получить остальные:

import re
strng ="Fiscal Year Ended March 31, 2018 Total Year (in $000's)"
m = re.search(r"(.*)\b(20[012]\d)\b(.*)",strng)
if m:
    print("YEAR: {}".format(m.group(2)))
    print("REST: {}{}".format(m.group(1),m.group(3)))

См. Демоверсию Python . Выход:

YEAR: 2018
REST: Fiscal Year Ended March 31,  Total Year (in $000's)

Если в вашей строке несколько совпадений, используйте re.split с вашим шаблоном:

import re
strng ="Fiscal Year Ended March 31, 2018 Total Year (in $000's) and Another Fiscal Year Ended May 31, 2019 Total Year (in $000's)"
print(re.findall(r"\b20[012]\d\b",strng))
# => ['2018', '2019']
print(" ".join(re.split(r"\b20[012]\d\b",strng)))
# => Fiscal Year Ended March 31,   Total Year (in $000's) and Another Fiscal Year Ended May 31,   Total Year (in $000's)

Смотрите еще одну демонстрацию Python .

Вы также можете убрать группы из начальных / конечных пробелов с помощью strip().

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