正则表达式匹配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指的是一个字符串列表,每个字符串包含一个单词,那么其他两个答案要优雅得多。