当前位置:  开发笔记 > 编程语言 > 正文

检查列表是否有一个或多个与正则表达式匹配的字符串

如何解决《检查列表是否有一个或多个与正则表达式匹配的字符串》经验,为你挑选了1个好方法。

如果需要说

if :
    do_stuff()

我发现这个强大的构造从列表中提取匹配的字符串:

[m.group(1) for l in my_list for m in [my_regex.search(l)] if m]

......但这很难读懂和矫枉过正.我不想要列表,我只是想知道这样的列表是否包含任何内容.

是否有更简单的阅读方式来获得答案?



1> timgeb..:

你可以简单地使用any.演示:

>>> lst = ['hello', '123', 'SO']
>>> any(re.search('\d', s) for s in lst)
True
>>> any(re.search('\d{4}', s) for s in lst)
False

使用re.match,如果你想从字符串的开头执行匹配.

说明:

any将检查迭代中是否存在任何真值.在第一个例子中,我们传递以下列表的内容(以生成器的形式):

>>> [re.search('\d', s) for s in lst]
[None, <_sre.SRE_Match object at 0x7f15ef317d30>, None]

它有一个匹配对象,它是真实的,而None总是False在布尔上下文中求值.这就是为什么any会返回False第二个例子:

>>> [re.search('\d{4}', s) for s in lst]
[None, None, None]

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有