Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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-如何使用正则表达式查找多个单词并同时提取它们_Python_Regex - Fatal编程技术网

Python-如何使用正则表达式查找多个单词并同时提取它们

Python-如何使用正则表达式查找多个单词并同时提取它们,python,regex,Python,Regex,使用正则表达式,我想找到一个句子中的所有匹配词,同时提取匹配词中需要的部分 我使用“re”模块中的API“findall”来查找匹配词,并加上括号来提取我想要的部分 例如,我有一个字符串“0xQQ1A、0xWW2B、0xEE3C、0xQQ4C”。 我只想要“0xQQ”或“0xWW”后面的剩余两个单词,这将产生一个列表[“1A”、“2B”、“4C”] 这是我的密码: import re MyString = "0xQQ1A, 0xWW2B, 0xEE3C, 0xQQ4C" MySearch =

使用正则表达式,我想找到一个句子中的所有匹配词,同时提取匹配词中需要的部分

我使用“re”模块中的API“findall”来查找匹配词,并加上括号来提取我想要的部分

例如,我有一个字符串“0xQQ1A、0xWW2B、0xEE3C、0xQQ4C”。 我只想要“0xQQ”或“0xWW”后面的剩余两个单词,这将产生一个列表[“1A”、“2B”、“4C”]

这是我的密码:

import re

MyString = "0xQQ1A, 0xWW2B, 0xEE3C, 0xQQ4C"
MySearch = re.compile("0xQQ(\w{2})|0xWW(\w{2})")
MyList = MySearch.findall(MyString)

print MyList 
所以我的预期结果是[“1A”,“2B”,“4C”]。 但实际结果是[('1A','',('2B'),('4C','')]

我想我可能用错了“()”和“|”的组合。
谢谢你的帮助

两个不同的捕获组将在输出中产生两个项目(每个项目都匹配)

相反,请使用单个捕获组并将您的
|
(或)放在前面:


(?:…)
是一个与
匹配的非捕获组-用于将
|
的效果限制为仅QQ/WW拆分,而不向输出中添加另一个捕获。)

两个不同的捕获组将在输出中产生两个项目(无论每个项目是否匹配)

相反,请使用单个捕获组并将您的
|
(或)放在前面:

(?:…)
是一个与
匹配的非捕获组-用于将
|
的效果限制为仅QQ/WW拆分,而不向输出中添加其他捕获。)

您可以尝试以下操作:

import re

string = "0xQQ1A, 0xWW2B, 0xEE3C, 0xQQ4C"
pattern = re.compile(r"(0xQQ|0xWW)(\w{2})")

result = [match[2] for match in pattern.finditer(string)]
结果将是:

['1A', '2B', '4C']
您可以尝试以下方法:

import re

string = "0xQQ1A, 0xWW2B, 0xEE3C, 0xQQ4C"
pattern = re.compile(r"(0xQQ|0xWW)(\w{2})")

result = [match[2] for match in pattern.finditer(string)]
结果将是:

['1A', '2B', '4C']