使用REGEX到字符串python列表中的2个字母组合

时间:2017-01-25 17:53:47

标签: python regex

我正在尝试提取包含2组3个字符的字符串,例如:

x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q']

我正在尝试提取包含USD&的字符串英镑。但美元和英镑可能是英镑兑美元或美元兑人民币

所以在示例中,它将返回

'USDGBP.q'

通过正则表达式实现这一目标的任何方法?

2 个答案:

答案 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中包含USDGBP的项目。

答案 1 :(得分:1)

您可以使用正面预测使用正则表达式emulate 逻辑AND 。这严格匹配GBPUSDUSDGBP

>>> 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).*')