Regex для последних слов в строке? - PullRequest
0 голосов
/ 02 апреля 2019

Скажем, у меня есть строка, такая как:

Woori Finance Holdings Co Ltd
Alliance One International Inc

И я хочу удалить такие вещи, как Co, Company, International и т. Д. Независимо от регистра, если они находятся в конце строки.

re.compile(r'\b(Incorporated|Corporation|Company|Inc Common Stock|QQQ|ETF|PLC|SA|Inc|Corp|Ltd|LP|plc|Group|The|Co|International)$',
           flags=re.IGNORECASE)

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

Woori Finance Holdings
Alliance One

Я также хочу добавить, что я не хотел бы удалять Company, если бы он был в начале или в середине строки, только если эточасть конца строки.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2019

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

(?:\s+(?:Incorporated|Corporation|Company|Inc Common Stock|QQQ|ETF|PLC|SA|Inc|Corp|Ltd|LP|plc|Group|The|Co|International))+\s*$

Демонстрация RegEx

Для использования на питоне:

regex = re.compile(r'(?:\s+(?:Incorporated|Corporation|Company|Inc Common Stock|QQQ|ETF|PLC|SA|Inc|Corp|Ltd|LP|plc|Group|The|Co|International))+\s*$', re.MULTILINE | re.IGNORECASE)

s = regex.sub('', s)
2 голосов
/ 02 апреля 2019

Вы можете использовать re.sub для замены последних ненужных символов:

import re

s1 = 'Woori Finance Holdings Co Ltd'
s2 = 'Alliance One International Inc'

pattern = re.compile(r'\b(Incorporated|Corporation|Company|Inc Common Stock|QQQ|ETF|PLC|SA|Inc|Corp|Co Ltd|Ltd|LP|plc|Group|The|Co|International)$', flags=re.IGNORECASE)

print(re.sub(pattern, '', s1))
# Woori Finance Holdings

print(re.sub(pattern, '', s2))
# Alliance One International

Обратите внимание, что я также добавил 'Co Ltd' как часть сопоставляемого шаблона.

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