正则表达式匹配python列表中的所有单词,而不是由@

正则表达式匹配python列表中的所有单词,而不是由@,python,regex,Python,Regex,我目前正在使用此代码搜索所有单词的列表,但我需要它来忽略前面带有@的单词 [@苹果、桃子、橘子、番石榴] 仅返回: [桃子,桔子] words=re.compile(r'\w+) 有谁能帮我做同样的事情吗?你可以简单地用消极的眼光看后面。这样的模式应该可以工作: (?<!@)\b\w+\b (? 请注意,\b(单词边界)的存在是为了确保它匹配整个单词,如果没有它们,它将匹配pples和uava为什么没有regex它似乎是一项相当简单的任务,而regex似乎比需要的任务更繁重,为什么不这样

我目前正在使用此代码搜索所有单词的列表,但我需要它来忽略前面带有@的单词

[@苹果、桃子、橘子、番石榴]

仅返回:

[桃子,桔子]

words=re.compile(r'\w+)


有谁能帮我做同样的事情吗?

你可以简单地用消极的眼光看后面。这样的模式应该可以工作:

(?<!@)\b\w+\b
(?

请注意,
\b
(单词边界)的存在是为了确保它匹配整个单词,如果没有它们,它将匹配
pples
uava
为什么没有regex它似乎是一项相当简单的任务,而regex似乎比需要的任务更繁重,为什么不这样做呢

f = []
for w in l:
    if not w.startswith("@"):
       f.append(w)
试试这个:

[x for x in l if not x.startswith('@') ]
成为
l
您原始的未过滤列表


或者如果你想要一个生成器而不是一个实际的列表,用括号代替方括号。

这不是一个有效的列表。列表中的每个项目都有引号吗
[“@apples”,“peaches”,“oranges”,“guava”]
(提出非正则表达式解决方案的回答者似乎是这么想的)或者实际上是一个Python字符串
“[@apples,peaches,oranges,@guava]”
?当OP谈论一个单词列表时,
不会找到(“^[^@]”)
够了吗?@Hyperboreus如果OP指的是在一个字符串中查找多个单词,那么答案是否定的。如果OP指的是一个字符串列表,每个字符串包含一个单词,那么其他两个答案要优雅得多。