这个问题已经在这里有了答案 :
以re.sub替换模式处理对捕获组的反向引用 (2个答案)
去年关闭。
我有以下内容:
<text top="52" left="20" width="383" height="15" font="0"><b>test</b></text>
而且我有以下内容:
fileText = re.sub("<b>(.*?)</b>", "\1", fileText, flags=re.DOTALL)
我上面发布的字符串在哪个fileText中。在fileText
运行正则表达式替换后打印出来时,我回来了
<text top="52" left="20" width="383" height="15" font="0"></text>
而不是预期的
<text top="52" left="20" width="383" height="15" font="0">test</text>
现在我相当精通regex,我知道它应该可以工作,实际上我知道它可以正确匹配,因为我可以在groups
搜索并打印出时看到它,groups
但是我对python还是陌生的,并且对为什么它不能正确地使用反向引用
您需要在此处使用原始字符串,以便不会将反斜杠作为转义字符进行处理:
>>> import re
>>> fileText = '<text top="52" left="20" width="383" height="15" font="0"><b>test</b></text>'
>>> fileText = re.sub("<b>(.*?)</b>", r"\1", fileText, flags=re.DOTALL)
>>> fileText
'<text top="52" left="20" width="383" height="15" font="0">test</text>'
>>>
注意如何"\1"
更改为r"\1"
。尽管这是一个很小的更改(一个字符),但效果却很大。见下文:
>>> "\1"
'\x01'
>>> r"\1"
'\\1'
>>>
反向引用构造允许随后在同一正则表达式中识别先前匹配的子表达式。 下表列出了这些结构 - 反向引用构造 描述 图案 火柴 \ number 反向引用。 匹配带编号的子表达式的值。 (\w)\1 "ee" in "seek" \k< name > 命名为反向引用。 匹配命名表达式的值。 (?\w)\ k "ee" in "seek"
反向引用构造允许随后在同一正则表达式中识别先前匹配的子表达式。 下表列出了这些结构 - 反向引用构造 描述 图案 火柴 \ number 反向引用。 匹配带编号的子表达式的值。 (\w)\1 "ee" in "seek" \k< name > 命名为反向引用。 匹配命名表达式的值。 (?\w)\ k "ee" in "seek"
我使用的是spring 4.0.1,hibernate 4.3.5,jackson 1.9.2和STS IDE我正在创建一个RESTful Web服务,当我使用Hibernate代码生成器时,它以JSON格式返回数据,它生成由注释的关联实体的getter和setter,用于源,用于引用,这会导致无限递归序列化。我尝试使用Jackson的@JsonIgnore和@JsonBackReference注
本文向大家介绍反向索引与正向索引之间的差异,包括了反向索引与正向索引之间的差异的使用技巧和注意事项,需要的朋友参考一下 反向索引和正向索引是用于在一个文档或一组文档中搜索文本的数据结构。 倒排索引 倒排索引将单词存储为索引,将文档名称存储为映射参考。 远期指数 转发索引将文档名称存储为索引,将单词存储为映射参考。 以下是倒排索引和正向索引之间的一些重要区别。 序号 键 倒排索引 远期指数 1 映射
问题内容: 据我了解 不应该匹配。实际上,甚至拒绝编译它,而的也是如此。模块似乎有不同的看法: 结果: 任何人都可以对此行为提供合理的解释吗? 更新资料 这种行为似乎是限制了在re模块。替代regex模块似乎可以正确处理断言中的组: 请注意,与有所不同pcre,regex它还允许可变宽度的查找: 最终,regex将被包含在标准库中,如PEP 411中所述。 问题答案: 这看起来确实像是Python
问题内容: 情况 我想在的每个后面添加一个数字。 例 从 至 题 我应该如何写替换字符串? 这 只是一个例子 ,所以建议是 不是 一个有效的答案。 我想知道替换字符串中的反向引用后如何具有数字。 问题答案: 解决方案是将反向引用包装在中。 这将输出 a8bcde8fghi8j 有关此特殊情况的参考,请参见手册。
本文向大家介绍Regular Expressions 反向引用和非捕获组,包括了Regular Expressions 反向引用和非捕获组的使用技巧和注意事项,需要的朋友参考一下 示例 由于对组进行了“编号”,因此某些引擎还支持匹配先前已再次匹配的组。 假设您想匹配长度等于3的两个等于字符串除以$您要使用的东西: 这将匹配以下任何字符串: 如果您希望引擎不为组编号,则可以声明其不捕捉。一个非捕获组
问题内容: 我必须先匹配一个数字,然后再匹配14次。然后,我来到了regexstor.net/tester中的以下正则表达式: 编辑 当我将其粘贴到代码中时,包括正确的反斜杠: 我已经用来替换了反向引用,该反向引用用于替换Java中的匹配项。 然后我意识到这是行不通的。在Java中,当需要在REGEX中向后引用匹配项时,必须使用,但是要替换它时,运算符为。 我的问题是:为什么? 问题答案: 在Ja