繁体   English   中英

正则表达式中字符串的最后一个单词?

[英]Regex for last words in string?

说我有一个字符串,例如:

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在字符串的开头或中间,只要它是字符串结尾的一部分。

您可以使用此正则表达式在末尾匹配1+个要删除的单词:

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

正则演示

对于python使用:

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)

您可以使用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'作为要匹配的模式的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM