【发布时间】:2014-01-24 05:45:37
【问题描述】:
我对正则表达式和sub 在 Python 中的工作方式有点困惑。
我有这个例子:
nw = " textttt "
nw = re.sub(r'\s+(textttt)\s+', r'\1 ', nw)
nw 中的值将是 nw = "textttt "。
但是,如果我有:
nw = " textttt "
nw = re.sub(r'\s(textttt)\s', r'\1 ', nw)
nw 的值将是 nw = " textttt "。
有人可以解释第一个和第二个结果是如何产生的以及为什么它们不同吗?
【问题讨论】:
-
除了在正则表达式中使用修饰符之外,您的正则表达式完全按预期工作。
-
您能否解释一下为什么要从
nw中删除空格? -
我不确定这里有什么困惑。在第一种情况下,该模式匹配
textttt周围的所有空格,替换是后跟一个空格的反向引用。在第二种情况下,该模式匹配指定文本之前和之后的单个空格并相应地替换。 -
\s后面的+匹配一个或多个空格。这具有匹配“textttt”之前和之后的所有空格的效果,但由于\s不在捕获组中,因此在替换之后它就消失了。
标签: regex python-3.x