python - 为正则表达式添加额外的命名组
问题描述
您可以使用re.sub
命名组在替换字符串中引用它们:
import re
re.sub(r"(?P<mygroup>.*):(.*)",
r"\g<2> AND \g<mygroup>",
"foo:bar")
-> "bar AND foo"
是否有可能提供其他组,例如,
re.sub(r"(?P<mygroup>.*):(.*)",
r"\g<2> AND \g<mygroup> AND \g<anothergroup>",
"foo:bar",
supplemental_groups = {"anothergroup" : "hamspam"} )
-> "bar AND foo AND hamspam"
谢谢!
解决方案
您可以传递一个可调用作为替换参数,并且您可以使用 lambda 传递您需要的任何其他“补充”组:
import re
def repl(m, extra_groups):
return fr"{m.group(2)} AND {m.group('mygroup')} AND {extra_groups['anothergroup']}"
supplemental_groups = {"anothergroup" : "hamspam"}
print (re.sub(r"(?P<mygroup>.*):(.*)",
lambda x, extra_groups=supplemental_groups: repl(x, extra_groups),
"foo:bar"))
请参阅Python 演示。输出:bar AND foo AND hamspam
。
推荐阅读
- google-apps-script - appscript 中是否有 i.height 参数?
- laravel - 使用 Laravel 干预的圆形图像
- javascript - React中如何在页面上同时使用HashRouter和锚点导航?
- flutter - 如何在 Flutter 中创建加载屏幕?
- r - 置信区间:使用 mob() 树(partykit 包)和logistic() 模型
- r - 如何根据特定的列顺序对数据集进行排序
- javascript - 使用 i18n 的时刻格式
- apache-kafka - KStream copartition join 使用不同模式名称的 avro 键
- c# - 捕获雨水算法复杂度
- linux - 获取安装在数组变量 BASH 中的 yum list