【发布时间】:2016-04-06 10:09:54
【问题描述】:
我正在尝试使用 Python 2.7 进行模式匹配并将第一人称替换为第二人称。
string = re.sub(r'(\W)I(\W)', '\g<1>you\g<2>',string)
string = re.sub(r'(\W)(me)(\W)', '\g<1>you\g<3>',string)
# but does NOT work
string = re.sub(r'(\W)I|(me)(\W)', '\g<1>you\g<3>',string)
我想使用最后一个正则表达式,但不知何故,捕获组都搞砸了,甚至执行 \g 会显示奇怪的不规则匹配。我认为捕获组 3 将是最后一个单词边界,但它似乎不是。
例句可能是:I like candy.
我对替换的正确性不是很感兴趣(我永远不会被选中,因为我是第一个),但我不知道为什么捕获组没有按我的预期工作。
谢谢!
【问题讨论】:
-
什么是 Python 版本,顺便说一句?
-
2.7!我会补充问题。
-
那么,第三种模式至少有两个问题:错误的交替边界和不参与的组替换。你没有收到
"unmatched group"错误吗? -
我正在查看您的答案,并将投票赞成原始线程。非常感谢!
-
@noob:我宁愿称其为“优化”方法 :)
标签: python regex python-2.7