-1

我有一个列表,我想知道该列表中的任何一项是否在使用正则表达式的字符串中。有没有办法做到这一点?

4

3 回答 3

5

当然。

myregex = re.compile(...)
print any(myregex.search(s) for s in my_list_of_strings)

或许:

regexs = [re.compile(s) for s in my_list_of_regex_strings]
any(r.search(my_string) for r in regexs)

我想这可能与以下内容相同:

regex_str = '|'.join('(?:%s)'%re.escape(s) for s in list_of_regex_strings)
re.search(regex_str,my_string)

我仍然无法判断您要尝试哪种方式...

最后,如果你真的想知道哪个正则表达式匹配:

next(regex_str for regex_str in regex_str_list if re.search(regex_str,mystring))

如果没有正则表达式匹配,这将引发StopIteration异常(您可以捕获)。

于 2012-12-20T21:30:17.123 回答
0

我假设 OP 正在询问如何找出字符串列表中的任何一项是否与使用 regex 的模式匹配

# import the regex module
import re

# some sample lists of strings
list1 = ['Now', 'is', 'the', 'time', 'for', 'all', 'good', 'men']
list2 = ['Me', 'Myself', 'I']

# a regex pattern to match against (looks for words with internal vowels)
pattern = '.+[aeiou].+'

# use any() around a list comprehension to determine
# if any match via the re.match() function
any(re.match(pattern, each) for each in list1)

# if you're curious to determine just what is matching your expression, use filter()
list(filter(lambda each: re.match(pattern, each) , list2))
于 2012-12-20T21:43:33.977 回答
-2
for each item in list:
   use regex on string

鉴于您的问题的普遍性,这尽可能具体。

编辑:这是伪代码,而不是 python

于 2012-12-20T21:30:31.527 回答