我有一个列表,我想知道该列表中的任何一项是否在使用正则表达式的字符串中。有没有办法做到这一点?
问问题
174 次
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 回答