Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式将字符串列表中的字母组合转换为2_Python_Regex - Fatal编程技术网

Python 使用正则表达式将字符串列表中的字母组合转换为2

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])

我试图提取包含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
返回同时包含
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)