# coding=utf-8
import re
f = open('/Users/.../example.txt')
mensaje = f.read()
mensaje = mensaje.replace("\n","")
keywords_cap = ['SpA','SPA','LIMITADA','LTDA','S.A.']
keywords_cap = map(re.escape, keywords_cap)
keywords_cap.sort(key=len, reverse=True)
obj = re.compile(r'\s*([^:]*)(?<!\w)(?:{})'.format('|'.join(keywords_cap)))
print("COMPANY NAME: %s" % obj.findall(mensaje))
我有不同的文件,其中包含:
或;
,公司名称,以及在keywords_cap
中定义的一个单词
文件包含:
Nombre o razón social: "MJ FACILITIES SERVICES SpA nombre de fantasía MJ SpA."
现在我的输出是:
MJ FACILITIES SERVICES SpA nombre de fantasía
我只想要MJ FACILITIES SERVICES SpA
您可以首先使用
[:,;.]
匹配起始边界,然后使用任何空格和可选的"
字符来“ltrim”结果(使用\s*"?
),然后匹配并捕获除这些分隔符之外的任何0+字符,尽可能少,最多可以使用一个keywords_cap
:参见Python demo和regex demo
细节
[:,;.]
-a:
、,
、;
或.
\s*
-0+空格字符"?
-可选的"
([^:,;.]*?(?<!\w)(?:{}))
-捕获组1(这是re.findall
将返回的结果):[^:,;.]*?
-除了:
、,
、;
和.
之外的任何零个或多个字符,尽可能少(*?
是惰性量词)(?<!\w)
-不允许紧靠左侧的单词字符(?:{})
—包含转义keyword_cap
项的替换组李>相关问题 更多 >
编程相关推荐