python re.sub - 替代替换模式

标签 python regex python-3.x backreference capture-group

我想为 re.sub 提供替代替换模式。

假设我有两种搜索模式作为替代方案,如下所示:

re.sub(r"[A-Z]+|[a-z]+", replacementpattern, string)

而不是提供一种替换模式,我想以某种方式捕获哪个搜索模式替代匹配并提供替代替换模式。 这可能吗? 谢谢。

PS。这里的代码细节无关紧要,这是一个一般性问题。

最佳答案

您可以将函数传递给re.sub()。在该函数中,您可以根据捕获的组返回所需的值。一个简单的代码来说明:

>>> def fun(m):
...   if m:
...     if m.group(1):
...        return 'x'
...     else:
...        return 'y'


>>>print re.sub(r"([A-Z]+)|([a-z]+)", fun , "ab")

函数fun()检查匹配是否成功,并根据捕获的组返回替换字符串。如果 [A-Z]+ 匹配,则 x 是替换字符串,否则 [a-z]+ 匹配,并且 y是替换字符串。

了解更多信息:doc

关于python re.sub - 替代替换模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776934/

相关文章:

python - 如何在网络上的Python Flask中从AWS s3读取文件

javascript - 使用或组合两个正则表达式条件

Python如何使用分割定界符删除csv上的空格

php - Laravel 双重验证正则表达式不起作用

python - 为什么 Zappa 部署缺少虚拟环境中存在的所有/大多数包?

python:从 couchdb 端点获取 npm 包数据

python - 如何将多个分区的 .gzip 文件读入 Spark Dataframe?

python - 在 Django 中序列化一对一关系

python - 如何截断 Pandas 时间序列数据框中的列以删除前导零和尾随零?

python - 如何在一个变量中捕获 python 循环结果