首页 > 解决方案 > 正则表达式,用于在前面有逗号 + 空格并以空格 +(大写 X)结尾的字符串中间提取数据

问题描述

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

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

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

我用于解析名称的正则表达式如下:

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

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

关于我在这里做错了什么的任何指示?

标签: pythonregex

解决方案


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

如果您不使用,这不是必需的re.MULTILINE,因为您使用re.match

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。

解决方案

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

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.'}


推荐阅读