我目前正在使用此代码来搜索所有单词的列表,但我需要它来忽略那些以 @ 开头的单词。
[@apples, peaches, oranges, @guava]
只返回:
[peaches, oranges]
words = re.compile(r'\w+')
任何人都可以帮助我做同样的事情吗?
为什么正则表达式没有它似乎是一项相当简单的任务,而正则表达式似乎比需要的更繁重,为什么不这样做......
f = []
for w in l:
if not w.startswith("@"):
f.append(w)
尝试这个:
[x for x in l if not x.startswith('@') ]
成为l
您的原始未过滤列表。
或者,如果您想要生成器而不是实际列表,请将方括号替换为圆括号。
您可以简单地使用负面的后视。像这样的模式应该有效:
(?<!@)\b\w+\b
注意\b
(单词边界)的存在是为了确保它匹配整个单词——没有它们它会匹配pples
and uava
。