如何在“in”python函数中使用正则表达式

时间:2017-09-08 11:36:32

标签: python regex string

我正在使用Python'in'函数来检查一个小字符串是否在另一个更大的字符串中。问题是下一步:

word1 = 'log'
word2 = 'log_enable'
string = ['parent_log', 'parent_log_enable']

for e in string:
    if word1 in e:
        print 'here we have the word'

所以,很明显,“我们这里有”这个词会被打印两次。我想知道是否可以在'in'函数中使用正则表达式,在这种情况下,我应该使用哪一个来获得正确的输出?

谢谢,问候。

麦克

2 个答案:

答案 0 :(得分:2)

您不能将正则表达式与in一起使用。只需将模块直接用于替换 in

import re

pattern = re.compile(r'log(?:_enable)?')

for e in string:
    if pattern.search(e):
        print 'here we have the word'

此处模式检查log,后面跟_enable

答案 1 :(得分:0)

您不能单独使用in来实现您想要的目标。

如果您想使用in,因为它更简洁,列表推导可能就是您想要的。

我将以Martijn的答案为基础

import re
p = re.compile(r'log(?:_enable)?')
# Check if any match
any(p.search(s) for s in ['parent_log', 'parent_log_enable']) 
# Result: True

# Get all matches
[s for s in ['parent_log', 'parent_log_enable'] if p.search(s)] 
# Result: ['parent_log', 'parent_log_enable']