gpt4 book ai didi

python - 用于匹配所有字符的正则表达式,除了一些特殊字符和 ":)"

转载 作者:太空狗 更新时间:2023-10-29 21:27:43 25 4
gpt4 key购买 nike

我正在尝试从字符串中删除除 #@:):(。示例:

this is, a placeholder text. I wanna remove symbols like ! and ? but keep @ & # & :)

应该导致(删除匹配结果后):

this is a placeholder text I wanna remove symbols like  and  but keep @  #  :)

我试过:

(?! |#|@|:\)|:\()\W

它正在工作,但在 :):( 的情况下,: 仍在匹配。我知道它是匹配的,因为它检查每个字符和前面的字符,例如: :) 只匹配 ::)) 匹配 :)

最佳答案

这是一个棘手的问题,因为您想删除除某个白名单之外的所有符号。此外,白名单中的一些符号实际上由两个字符组成:

:)
:(

为了处理这个问题,我们可以先保留冒号 : 和括号,然后有选择地删除其中一个,如果它不是笑脸或皱眉的一部分:

input = "this is, a (placeholder text). I wanna remove symbols like: ! and ? but keep @ & # & :)"
output = re.sub(r'[^\w\s:()@&#]|:(?![()])|(?<!:)[()]', '', input)
print(output)

this is a placeholder text I wanna remove symbols like and but keep @ & # & :)

我使用的正则表达式字符类是:

[^\w\s:()@&#]

这将匹配任何不是单词或空白字符的字符。它还使您的白名单免于替换。在交替的其他两个部分中,我们通过删除冒号和括号(如果它们不是笑脸的一部分)来覆盖这个逻辑。

关于python - 用于匹配所有字符的正则表达式,除了一些特殊字符和 ":)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091632/

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