gpt4 book ai didi

python - 正则表达式删除匹配的单词和连续的单词

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:14 24 4
gpt4 key购买 nike

我想删除单词 Dr 及其连续单词。
例如

输入

Financial disclosure of Dr Kucher
Patient 1 had adverse events and dr Bodendieck supposes that patient 1 does not tolerate milk
Drug accountability log and patient compliance.

在上面的输入模式中,我想删除所有以粗体突出显示的文本

输出

Financial disclosure of
Patient 1 had adverse events and supposes that patient 1 does not tolerate milk
Drug accountability log and patient compliance.

我正在使用的模式
/[(D|d)r]\s*(?=\w+)

据我了解
[(D|d)r] 应匹配“Dr”或“dr”
\s* 应匹配空格
(?=\w+]) 应匹配紧邻的连续单词。

引用模式
http://regex101.com/r/eU5yT8/2

但是上面的模式没有被匹配我是形成正则表达式的新手。请帮助我理解我的错误。谢谢

最佳答案

应该是:

re.sub(r'\b[Dd]r\s+\w+', '', txt)

当你用(?=...)换行时,它会向前看,但不会消耗,如the documentation :Isaac (?=Asimov) 仅当后跟 'Asimov' 时才匹配 'Isaac '。这意味着它不会匹配 'Asimov':

>>> re.findall(r'Isaac (?=Asimov)', 'Isaac Asimov')
['Isaac ']

此外,您还需要 [Dd]r,这意味着 Dd 后跟 r,或者或者(Dr|dr)

\b 将指定单词边界,否则,它将匹配单词末尾的 dr (如果我们有这样的单词):

>>> re.sub(r'[Dd]r\s*\w+', '', 'xdr test')
'x'

您将需要 \s+,否则它将匹配单词中间的 dr:

>>> re.sub(r'\b[Dd]r\s*\w+', '', 'drug')
''

关于python - 正则表达式删除匹配的单词和连续的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25892299/

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