2024-05-28 23:45:21 发布
网友
从测试字符串:
test=text-AB123-12a test=text-AB123a
我只需要提取'AB123-12'和'AB123',但是:
'AB123-12'
'AB123'
re.findall("[A-Z]{0,9}\d{0,5}(?:-\d{0,2}a)?", test)
退货:
['', '', '', '', '', '', '', 'AB123-12a', '']
这些多余的空位是什么?如何移除它们?你知道吗
模式设置为将长度为零的字符与字符集量词的下限设置为0相匹配。只需将设置为1即可生成所需的结果:
>>> import re >>> test = ''' test=text-AB123-12a ... test=text-AB123a''' >>> re.findall("[A-Z]{1,9}\d{1,5}(?:-\d{0,2}a)?", test) ['AB123-12a', 'AB123']
RegEx测试器:http://www.regexpal.com/表示模式字符串[A-Z]{0,9}\d{0,5}(?:-\d{0,2}a)?可以匹配0个字符,因此匹配无限。你知道吗
[A-Z]{0,9}\d{0,5}(?:-\d{0,2}a)?
再检查一下你的表情。Python提供未定义的结果。你知道吗
量词{0,n}将匹配前面模式的0到n次出现。因为您匹配的两个模式允许0次出现,而第三个模式是可选的(?),所以它将匹配0长度的字符串,即字符串中的每个字符。你知道吗
{0,n}
?
编辑以找到每个模式的最小值和最大值分别为9和5,这样可以得到正确的结果:
>>> test='text-AB123-12a' >>> import re >>> re.findall("[A-Z]{1,9}\d{1,5}(?:-\d{0,2}a)?", test) ['AB123-12a']
如果没有进一步的细节,你匹配的字符串到底是什么样子的,我就不能给出更好的答案。你知道吗
模式设置为将长度为零的字符与字符集量词的下限设置为0相匹配。只需将设置为1即可生成所需的结果:
RegEx测试器:http://www.regexpal.com/表示模式字符串
[A-Z]{0,9}\d{0,5}(?:-\d{0,2}a)?
可以匹配0个字符,因此匹配无限。你知道吗再检查一下你的表情。Python提供未定义的结果。你知道吗
量词
{0,n}
将匹配前面模式的0到n次出现。因为您匹配的两个模式允许0次出现,而第三个模式是可选的(?
),所以它将匹配0长度的字符串,即字符串中的每个字符。你知道吗编辑以找到每个模式的最小值和最大值分别为9和5,这样可以得到正确的结果:
如果没有进一步的细节,你匹配的字符串到底是什么样子的,我就不能给出更好的答案。你知道吗
相关问题 更多 >
编程相关推荐