gpt4 book ai didi

regex - 使用字典替换字符串 - 正则表达式

转载 作者:行者123 更新时间:2023-12-04 15:58:20 24 4
gpt4 key购买 nike

我有一本俚语词典及其含义,我想替换我文本中的所有俚语。

我找到了部分可行的解决方案 https://stackoverflow.com/a/2400577

现在我的代码是这样的:

import re

myText = 'brb some sample text I lov u. I need some $$ for 2mw.'

dictionary = {
'brb': 'be right back',
'lov u': 'love you',
'$$': 'money',
'2mw': 'tomorrow'
}

pattern = re.compile(r'\b(' + '|'.join(re.escape(key) for key in dictionary.keys()) + r')\b')
result = pattern.sub(lambda x: dictionary[x.group()], myText)

print(result)

输出:

be right back some sample text I love you. I need some $$ for tomorrow.

如您所见,$$ 没有改变,我知道这是由于 \b 语法造成的。如何更改我的正则表达式以实现我的目标?

最佳答案

用检查搜索短语周围的任何单词字符的环视替换单词边界

pattern = re.compile(r'(?<!\w)(' + '|'.join(re.escape(key) for key in dictionary.keys()) + r')(?!\w)')

参见 Python demo

(?<!\w)如果在当前位置和 (?!\w) 的左侧立即有一个单词 char,则负向后查找会导致匹配失败。如果当前位置右侧紧邻单词 char,则否定前瞻会导致匹配失败。

替换(?<!\w)(?<!\S)(?!\w)(?!\S)如果您只需要匹配空格字符和字符串开头/结尾之间的搜索短语。

关于regex - 使用字典替换字符串 - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102201/

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