gpt4 book ai didi

python - 在正则表达式中组合括号和单词边界

转载 作者:行者123 更新时间:2023-12-04 03:30:44 26 4
gpt4 key购买 nike

<分区>

我有一个包含多种类型的个人身份信息 (PII) 的字符串:

text = 'Hello my name is Tom and I love Tomcat. My email address is tom@foo.bar and my phone number is (201) 5550123.'

我还有一个要从字符串中删除的 PII 列表:

values = ['Tom', 'tom@foo.bar', '(201) 5550123']

我想将这些值组合成一个正则表达式并一次替换它们,而不是循环遍历这些值并一次替换它们:

escaped_values = [r'\b' + re.escape(value) + r'\b' for value in values]
combined_pattern = '|'.join(escaped_values)
combined_regex = re.compile(combined_pattern)

单词边界很重要,因为我不想从“Tomcat”中删除“Tom”——只有当它单独出现时。无论如何,这几乎可以工作,除了电话号码:

combined_regex.sub('', text)
# 'Hello my name is and I love Tomcat. My email address is and my phone number is (201) 5550123.'

我稍微隔离了这个问题。它与括号和单词边界的组合有关:

re.compile(r'\b\(201\)\ 5550123\b').sub('', 'before (201) 5550123 after')
# 'before (201) 5550123 after'

这不是 Python 问题,如下所示:

RegEx Pal showing PCRE mismatch

我知道有很多方法可以更改我的程序,但我不明白为什么这个正则表达式不起作用,这让我抓狂。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com