Python 2.7正则表达式捕获组未按预期工作

时间:2016-04-06 10:09:54

标签: python regex python-2.7

我正在尝试模式匹配并用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&lt; 0&gt;显示奇怪,不规则的比赛。我认为捕获组3将是最后一个字边界,但它似乎不是。

示例句子可以是:I like candy.

我对替换的正确性并不感兴趣(因为我先行,所以我永远不会被选中),但我不知道为什么捕获组不能像我期望的那样工作。

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试使用以下正则表达式。

正则表达式: \b

<强>解释

    双方的
  • (I|me)标志着边界一词。

  • I匹配mei

注意: - 您可以使用BroadcastReceiver标记使其不区分大小写。

<强> Regex101 Demo