ReEX用于提取具有前面逗号+空间并以空间+结尾的字符串中间的数据(资本x)

2024-10-04 01:34:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,我正试图使用正则表达式从中提取。以下是我的字符串示例:

splitm = 'SM Analyst, AMT Tax Company X Hi.'

我想将名称解析为"SM Analyst",将公司解析为"AMT Tax Company",将X之后的数据解析为"Hi."

我解析名称的正则表达式如下所示:

x = re.match('^.*?\,', splitm) 

对于我正在尝试的公司:(逗号后的所有内容,但都不起作用) y = re.match('^\,(.*?)', splitm)

有人指出我做错了什么吗


Tags: 数据字符串re名称示例match公司hi
2条回答

插入符号(^)匹配字符串中第一个字符之前的位置

如果不使用re.MULTILINE,则不需要这样做,因为您使用了^{}

If zero or more characters at the beginning of string match the regular expression pattern, return a corresponding match object.

解决方案

我们可以使用命名组捕获单个正则表达式中的相关部分,然后使用^{}将结果作为字典:

import re

REGEX = r'(?P<role>.+?),\s+(?P<company>.+?)\s+X\s+(?P<message>.+)'
re.match(REGEX, "SM Analyst, AMT Tax Company X Hi.").groupdict()

{'role': 'SM Analyst', 'company': 'AMT Tax Company', 'message': 'Hi.'}

试试这个:

import re

splitm = 'SM Analyst, AMT Tax Company X Hi.'

print(re.findall('(?<=, ).*(?= [A-Z] )',splitm)) # Find string that is between a ', ' and a uppercase letter that has a space on both sides
print(re.findall('(?<= )\w+\.',splitm)) # Find word character string that is between a ' ' and a '.'

输出:

['AMT Tax Company']
['Hi.']

相关问题 更多 >