当前位置: 首页 > 面试题库 >

python re.sub-替代替换模式

左翰海
2023-03-14
问题内容

我想为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



 类似资料:
  • 由于使用了容器模式来组织各模块的实例,意味着你可以比较容易的替换掉已经有的服务,以公众号服务为例: <...> $app = Factory::officialAccount($config); $app->rebind('request', new MyCustomRequest(...)); 这里的 request 为 SDK 内部服务名称。

  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • Git 对象是不可改变的,但它提供一种有趣的方式来用其他对象假装替换数据库中的 Git 对象。 replace 命令可以让你在 Git 中指定一个对象并可以声称“每次你遇到这个 Git 对象时,假装它是其他的东西”。 在你用一个不同的提交替换历史中的一个提交时,这会非常有用。 例如,你有一个大型的代码历史并想把自己的仓库分成一个短的历史和一个更大更长久的历史,短历史供新的开发者使用,后者给喜欢数据

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 我正在使用一些非常古老的。 我试图通过删除非字母字符(标点符号和数字等)来净化一些输入 通常我会做这样的事情: 然而,是在中引入的!所以它不会编译!http://docs.oracle.com/javase/7/docs/api/java/lang/string.html#ReplaceAll(java.lang.string,java.lang.string) 在之前,我们是如何做到这一点的?

  • Parameter Position参数位置 Type参数类型 Required必需 Default默认 Description 1 string Yes n/a This is the string of text to be replaced. 将被替换的文本字串 2 string Yes n/a This is the string of text to replace with. 用来替换