new_term = re.sub(r"[A-z]\-[A-z]", " ", original_term)
您需要将-
之前和之后的字符捕获到一个组中,并使用它们进行替换,即:
import re
subject = "ab-cd"
subject = re.sub(r"([a-z])\-([a-z])", r"\1 \2", subject , 0, re.IGNORECASE)
print subject
#ab cd
演示
http://ideone.com/layqwt
([A-z])\-([A-z])
Match the regex below and capture its match into backreference number 1 «([A-z])»
Match a single character in the range between “A” and “z” «[A-z]»
Match the character “-” literally «\-»
Match the regex below and capture its match into backreference number 2 «([A-z])»
Match a single character in the range between “A” and “z” «[A-z]»
\1 \2
Insert the text that was last matched by capturing group number 1 «\1»
Insert the character “ ” literally « »
Insert the text that was last matched by capturing group number 2 «\2»
问题内容: 我有以下几种可能的形式的字符串: 我希望能够将它正则化为,基本上替换和之间的所有内容。我试过了: 但这是行不通的。任何帮助表示赞赏。 PS 表示有一个换行符用于此目的。实际上不在那里。 问题答案: 您可以使用 并替换为。请参阅在线Go regex演示。 在这里,匹配并捕获子字符串(它将从替换模式中引用此值),并将匹配并消耗除换行符以外的任何0+字符,直至行尾。 参见Go演示: 输出:
问题内容: 我试图用下划线替换方括号内的破折号,但它用字符串中的下划线替换所有破折号。 例如,我要替换 与 但是它将下划线替换字符串中的 所有 破折号。 问题答案: 您可以使用 至于正则表达式本身,只有在符号后跟非s和非s的情况下,我才会匹配该符号,直到引擎找到为止。然后,我们在s中。可能情况并非如此(第4个连字符),但我希望这不是您的情况。 IDEONE演示 输出:
问题内容: 我有一个字符串: 我要删除paren内部和paren本身中的所有内容,仅保留: 我试图用正则表达式来做到这一点,但是我的困难在于这种模式: 当我使用它时,它总是给我一个。如何修复我的正则表达式? 问题答案: 由于括号是正则表达式中的特殊字符,因此您需要对其进行转义以明确匹配它们。 例如:
我需要替换以下字符串中的引号。 最终输出应该是“这是test()ing和test()ing”; i、 e仅当它以“test()开头,以”结尾时才替换。中间的文本保持不变。 这个坏了。 请为同样的问题推荐合适的正则表达式。
如何替换文本文件中两个引号之间的所有输入。第一个引号总是前面有一个选项卡,或者它是行中的第一个字符(csv文件)。我尝试了以下正则表达式 但是这个正则表达式只匹配两个引号之间的第一个输入,而不是全部。 例如,以下文本: 应成为 我读了下面的文章(javascript正则表达式替换括号之间的空格),非常相似,但正则表达式建议在我的情况下不可用。
我想删除前导