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

Python re.sub用匹配的内容替换

宓弘壮
2023-03-14
问题内容

为了掌握Python中的正则表达式,我试图输出一些在URL中突出显示的HTML。我的输入是

images/:id/size

我的输出应该是

images/<span>:id</span>/size

如果我用Java语言执行此操作

method = 'images/:id/size';
method = method.replace(/\:([a-z]+)/, '<span>$1</span>')
alert(method)

我得到了期望的结果,但是如果我在Python中这样做

>>> method = 'images/:id/huge'
>>> re.sub('\:([a-z]+)', '<span>$1</span>', method)
'images/<span>$1</span>/huge'

我没有,如何让Python返回正确的结果而不是$1re.sub这样做是否正确?


问题答案:

只需使用\1代替$1

In [1]: import re

In [2]: method = 'images/:id/huge'

In [3]: re.sub(r'(:[a-z]+)', r'<span>\1</span>', method)
Out[3]: 'images/<span>:id</span>/huge'

另请注意,将原始字符串(r'...')用于正则表达式。它不是强制性的,但消除了转义反斜杠的需要,可以说使代码更具可读性。



 类似资料:
  • 问题内容: 我有一个字符串,例如。我想分别使用 JavaScript*和分别替换两个下划线。(因此)输出看起来像。该字符串可能包含多对下划线。 * 我所寻找的是一个方法来 无论是 运行在每场比赛,红宝石做它的方式的函数: 或 能够再次引用匹配的组,就像在ruby中一样: 有什么想法或建议吗? 问题答案: 哦,或者您也可以:

  • 我只想替换字符串中的单词,如果单词字符或单词前后没有连字符。 文本: 替换后的预期结果: 正则表达式: < li >正则表达式当前仅匹配第一个匹配项(< code>#后的按钮)。我需要做什么来匹配所有事件? < li >如何在Java中将< code>button替换为< code>text或任何其他单词? 我读过主题我能在Java regex中替换组吗?,但是我真的不明白如何为我的特殊情况使用示

  • 我在创建正则表达式以匹配这些内置组时需要一些帮助: 我尝试了以下匹配模式,但它给了我一些错误: 错误代码: 这是预览:https://regex101.com/r/WKal3Y/1

  • 我正在写一个求解方程求解方法。方法将是递归的;搜索所有外括号,当找到时,重新求解括号内的值,当没有找到括号时返回值。 Regex.Replace(...)替换指定模式的所有匹配项。我希望能够匹配到多个场景,并用不同的输出替换每个场景

  • 问题内容: 我对jQuery一无所知,但想实现一些非常重要的事情。 我想要一个按钮/链接来替换div内容,如果再次按下该按钮,它将把原始内容放回原处。 问题答案: 这是一种方法: HTML: jQuery:

  • 我有两个文本文件,并用第二个文件中的实际匹配项替换XXX占位符-按照第二个文件中给出的顺序。 第一个文本是一个文件,在一行中有多行和多个占位符。 欧盟由以下国家组成:XXX、XXX、XXX、XXX、XXX。。。。欧盟内最大的三个国家是XXX,XXX,XXX。 第二个文件是每行一个匹配的列表: 波兰荷兰丹麦西班牙意大利德国法国 我想把它替换如下: 欧洲联盟由下列国家组成:波兰、荷兰、丹麦、西班牙、意