python - 如何在 Python RegEx 中组合组?

标签 python regex

如何在以下代码中组合组(p1 和 p2)?

import re

txt = "Sab11Mba11"
p1 = "(S(a|b)(a|b))"
p2 = "(M(a|b)(a|b))"
px = "(" + p1 + '|' + p2 + ")"

print(re.findall(p1, txt)) # [('Sab', 'a', 'b')]
print(re.findall(p2, txt)) # [('Mba', 'b', 'a')]
print(re.findall(px, txt)) # [('Sab', 'Sab', 'a', 'b', '', '', ''), ('Mba', '', '', '', 'Mba', 'b', 'a')]

你能解释一下为什么我得到空字符串以及如何得到 [('Sab', 'a', 'b'), ('Mba', 'b', 'a')]?

最佳答案

没有参与匹配的捕获组的空值仍然输出。

您需要删除外括号并从空值中过滤结果元组:

import re

txt = "Sab11Mba11"
p1 = "(S(a|b)(a|b))"
p2 = "(M(a|b)(a|b))"
px = p1 + '|' + p2
print([tuple(filter(lambda m: m != '', x)) for x in re.findall(px, txt)])
# => [('Sab', 'a', 'b'), ('Mba', 'b', 'a')]

参见 Python demo .

关于python - 如何在 Python RegEx 中组合组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73501510/

相关文章:

python - 将视频加载到帧中时出现内存问题

java - java中的正则表达式模式未更新

php - Mysql正则表达式使用多个规则来匹配字符串

javascript - 从网站提取元数据

javascript - 使用 Javascript 进行正则表达式匹配

python - 在opencv安装后在Python中导入cv2时出错

python - 如何在 Python 中通过 API 查询在 SQL Alchemy 中插入关系数据(多对多)

python - 使用Python设置Windows 7时区

java - 用于提取带有可选点的前面数字的正则表达式

python - 如何在 python igraph 中从 .gml 文件创建加权图