python - 正则表达式,用于在前面有逗号 + 空格并以空格 +(大写 X)结尾的字符串中间提取数据
问题描述
我有一个字符串,我正在尝试使用正则表达式从中提取。这是我的字符串的示例:
splitm = 'SM Analyst, AMT Tax Company X Hi.'
我想解析出名称为"SM Analyst"
,公司为"AMT Tax Company"
和后面的X
数据"Hi."
我用于解析名称的正则表达式如下:
x = re.match('^.*?\,', splitm)
对于我正在尝试的公司:(逗号后的所有内容,但它不起作用)
y = re.match('^\,(.*?)', splitm)
。
关于我在这里做错了什么的任何指示?
解决方案
插入符号 (^) 匹配字符串中第一个字符之前的位置。
如果您不使用,这不是必需的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.'}
推荐阅读
- javascript - 找不到变量 Safari - Safari 扩展
- r - 同一行上的徽标和文字 警官 R
- javascript - 我正在尝试在 jsx-react 中动态添加图像,但它不会显示
- swift - 在 SwiftUI 中传递 html 字符串时加载本地 js 文件
- machine-learning - conv3d pytorch中的内核深度=1是什么意思
- azure - 如何使用翻转窗口触发器将 ADF 复制管道参数化为回溯和回填
- c++ - 如何在 C++ 中使用没有#include 的 cout 和 cin?
- java - 使用java,如果字符串的出现为真,则查找给定范围内的给定字母是否出现
- gradle - Gradle Maven Publish插件:如何在没有artifactId的情况下上传具有任意名称的文件?
- sql - PostgreSQL 选择 child_id 作为 parent_id