Python 使用正则表达式将字符串列表中的字母组合转换为2
我试图提取包含2组3个字符的字符串,例如:Python 使用正则表达式将字符串列表中的字母组合转换为2,python,regex,Python,Regex,我试图提取包含2组3个字符的字符串,例如: x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q'] 我试图提取包含USD和GBP的字符串。但美元和英镑可以是英镑美元或美元英镑 所以在这个例子中,它会返回 'USDGBP.q' 通过正则表达式实现这一点的任何方法?您可以使用列表理解: x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q'] print([s for s in x if 'USD' in s and 'GBP' in s])
x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q']
我试图提取包含USD和GBP的字符串。但美元和英镑可以是英镑美元或美元英镑
所以在这个例子中,它会返回
'USDGBP.q'
通过正则表达式实现这一点的任何方法?您可以使用列表理解:
x = ['USDGBP.q', 'CADUSD.q', 'GBPCAD.q']
print([s for s in x if 'USD' in s and 'GBP' in s])
看
它将从x
返回同时包含USD
和GBP
的项目。您可以逻辑and与正则表达式一起使用正向外观头。这严格匹配USDGBP
或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.*)
看看你为什么要严格考虑正则表达式解决方案?谢谢,如果你想发布以下内容,我会接受答案,尽管正则表达式是唯一的方法:)re.search(r'(USDGBP | GBUSD)(CADUD | USDCAD)(GBPCAD | CADBP),stringtomatch)