gpt4 book ai didi

python - 替换子字符串的正则表达式(如果不是单词的开头)

转载 作者:行者123 更新时间:2023-11-28 19:55:26 25 4
gpt4 key购买 nike

我正在处理像 @Alice @home 这样的推文。我想将用户提及转换为普通词(例如 @Alice => Alice)但保留个人 @ 作为 的代理项在。因此,简单地替换所有出现的 @ 是行不通的。

我发现了单词边界的概念,但我无法让它们为此工作。一方面,

print re.sub(r'\b@\b', '', '@Alice @ home')

没有任何改变,而

print re.sub(r'\bAlice\b', '', '@Alice @ home')

@@home 中的结果。所以我假设 at 符号 (@) 不算作单词的一部分。

简而言之,我基本上是在寻找模式,这样

print re.sub(pattern, '', '@Alice @ home')

输出Alice@home

感谢任何提示。

最佳答案

您可以使用边界 \B\b

>>> print re.sub(r'\B@\b', r'', '@Alice @ home')
Alice @ home
>>> print re.sub(r'\B@\b', r'', 'foo @Alice @ home')
foo Alice @ home

\B 匹配两个单词字符或两个非单词字符。因此,上述正则表达式中的 \B@ 匹配 Alice 之前的 @ 和另一个单独的 @ 符号。 \b 匹配单词字符和非单词字符(反之亦然)。所以下面的 \b 使模式只匹配第一个,因为第一个 @ 本身后跟一个单词字符,即 A

关于python - 替换子字符串的正则表达式(如果不是单词的开头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28019930/

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