我正在使用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'函数中使用正则表达式,在这种情况下,我应该使用哪一个来获得正确的输出?
谢谢,问候。
麦克
答案 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']