0

我目前正在使用此代码来搜索所有单词的列表,但我需要它来忽略那些以 @ 开头的单词。

[@apples, peaches, oranges, @guava]

只返回:

[peaches, oranges]

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

任何人都可以帮助我做同样的事情吗?

4

3 回答 3

6

为什么正则表达式没有它似乎是一项相当简单的任务,而正则表达式似乎比需要的更繁重,为什么不这样做......

f = []
for w in l:
    if not w.startswith("@"):
       f.append(w)
于 2013-08-29T05:54:33.003 回答
6

尝试这个:

[x for x in l if not x.startswith('@') ]

成为l您的原始未过滤列表。

或者,如果您想要生成器而不是实际列表,请将方括号替换为圆括号。

于 2013-08-29T05:56:23.787 回答
1

您可以简单地使用负面的后视。像这样的模式应该有效:

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

注意\b(单词边界)的存在是为了确保它匹配整个单词——没有它们它会匹配pplesand uava

于 2013-08-29T05:53:50.097 回答