[英]Function to extract company register number from text string using Regex
我有一个 function 从给定文本中提取公司注册号(德语: handelsregisternummer
)。 虽然我针对这个特定问题的正则表达式匹配正确的格式(请参阅演示),但我无法提取正确的公司注册号。
我想提取HRB 142663 B
但我得到HRB 142663
。
大多数数字的格式为HRB 123456
,但有时会在末尾附加字母B
import re
def get_handelsregisternummer(string, keyword):
# https://regex101.com/r/k6AGmq/10
reg_1 = fr'\b{keyword}[,:]?(?:[- ](?:Nr|Nummer)[.:]*)?\s?(\d+(?: \d+)*)(?: B)?'
match = re.compile(reg_1)
handelsregisternummer = match.findall(string) # list of matched words
if handelsregisternummer: # not empty
return handelsregisternummer[0]
else: # no match found
handelsregisternummer = ""
return handelsregisternummer
从网站上抓取的示例文本。 换行符使单词相互连接:
text_impressum = """"Berlin, HRB 142663 BVAT-ID.: DE283580648Tax Reference Number:"""
申请 function:
for keyword in ['HRB', 'HRA', 'HR B', 'HR A']:
handelsregisternummer = get_handelsregisternummer(text_impressum, keyword=keyword)
if handelsregisternummer: # if list is not empty anymore, then do...
handelsregisternummer = keyword + " " + handelsregisternummer
break
if not handelsregisternummer: # if list is empty
handelsregisternummer = 'not specified'
handelsregisternummer_dict = {'handelsregisternummer':handelsregisternummer}
之后我得到:
handelsregisternummer_dict ={'handelsregisternummer': 'HRB 142663'}
但我想要这个:
handelsregisternummer_dict ={'handelsregisternummer': 'HRB 142663 B'}
您需要在正则表达式中使用两个捕获组来捕获关键字和数字,并且只需匹配 rest:
reg_1 = fr'\b({keyword})[,:]?(?:[- ](?:Nr|Nummer)[.:]*)?\s?(\d+(?: \d+)*(?: B)?)'
# |_________| |___________________|
然后,您需要连接、加入所有匹配并返回的捕获组findall
:
if handelsregisternummer: # if list is not empty anymore, then do...
handelsregisternummer = " ".join(handelsregisternummer)
break
请参阅Python 演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.