如何用单条正则表达式提取等号连接的两组无多余符号的单词
正则合并实现方案
你可以直接使用带两个捕获组的单条正则完成需求,无需拆分匹配:
(\w+)="([^"]*)"
如果需要兼容双引号内存在转义引号的场景,可以使用兼容你原有逻辑的版本:
(\w+)="((?:(?!").)*)"
正则逻辑说明
- 第一个捕获组
(\w+):匹配等号左侧的单词,对应你需要的第一组输出结果 - 固定匹配
=":跳过等号和左侧双引号 - 第二个捕获组
([^"]*)/((?:(?!").)*):匹配双引号包裹的内容,自动排除两端的引号,对应你需要的第二组输出结果 - 末尾匹配
":闭合右侧双引号
使用示例(Python)
import re test_str = 'bla word1="word2" blabla abc="xyz" bla bla' result = re.findall(r'(\w+)="([^"]*)"', test_str) left_list = [item[0] for item in result] right_list = [item[1] for item in result] print(left_list) # 输出:['word1', 'abc'] print(right_list) # 输出:['word2', 'xyz']
内容的提问来源于stack exchange,提问作者granular_bastard
相关产品推荐
相关产品推荐

