我正在尝试提取包含2组3个字符的字符串,例如:
x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q']
我正在尝试提取包含USD&的字符串英镑。但美元和英镑可能是英镑兑美元或美元兑人民币
所以在示例中,它将返回
'USDGBP.q'
通过正则表达式实现这一目标的任何方法?
答案 0 :(得分:1)
您可以使用列表理解:
x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q']
print([s for s in x if 'USD' in s and 'GBP' in s])
请参阅Python demo。
它将返回x
中包含USD
和GBP
的项目。
答案 1 :(得分:1)
您可以使用正面预测使用正则表达式emulate 逻辑AND 。这严格匹配GBPUSD
或USDGBP
。
>>> import re
>>> pattern = re.compile(r'(?=.*USD)(?=.*GBP)')
>>> x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q', 'GBPUSD.q']
>>> print filter(lambda item: re.findall(pattern, item), x)
['USDGBP.q', 'GBPUSD.q']
但是如果你需要一个更宽松的正则表达式来匹配任何包含两个标记的字符串:
r'.*(?=.*USD).*(?=.*GBP).*')