Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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 正则表达式findall错误_Python_Regex_Findall - Fatal编程技术网

Python 正则表达式findall错误

Python 正则表达式findall错误,python,regex,findall,Python,Regex,Findall,我运行以下脚本 a = r'[abc] [abc] [y78]' paaa = re.compile(r'\[ab.*]') paaa.findall(a) 我得到 ['[abc] [abc] [y78]'] 为什么“[abc]”丢失了?“[abc]”显然也与模式匹配。python3 re.findall函数中是否存在任何错误 澄清: 对不起,paaa应该是paaa=re.compile(r'\[ab.*\]) 我要找的是会回来的东西 ['[abc]', '[abc]', '[abc] [a

我运行以下脚本

a = r'[abc] [abc] [y78]'
paaa = re.compile(r'\[ab.*]')
paaa.findall(a)
我得到

['[abc] [abc] [y78]']
为什么“[abc]”丢失了?“[abc]”显然也与模式匹配。python3 re.findall函数中是否存在任何错误

澄清:


对不起,
paaa
应该是
paaa=re.compile(r'\[ab.*\])
我要找的是会回来的东西

['[abc]', '[abc]', '[abc] [abc]', '[abc] [abc] [y78]']

基本上,任何子字符串都与模式匹配。

[ab.*]
中重复的
是贪婪的-它将匹配尽可能多的字符,以便这些字符后面跟着一个
]
。因此,第一个
[
和最后一个
]
之间的所有内容都是匹配的

改为使用惰性重复,使用
*?

a = r'[abc] [abc] [y78]'
paaa = re.compile(r'\[ab.*?]')
print(paaa.findall(a))

您也应该避开右方括号,并在正则表达式中使用非贪婪中继器
*?

import re
a = r'[abc] [abc] [y78]'
paaa = re.compile(r'\[ab.*?\]')
print(paaa.findall(a))
这将产生:

['[abc]', '[abc]']

“您也应该跳出右方括号”-没有必要。对不起,
paaa
应该是
paaa=re.compile(r'\[ab.\]')
我要找的东西基本上会返回['[abc]'、'[abc]'、'[abc][abc]、'[abc][y78]],任何子字符串都与模式匹配。很抱歉,
paaa
应该是
paaa=re.compile(r'\[ab.\]')
我要查找的是返回['[abc]'、'[abc]'、'[abc][abc]'、'[abc][abc][y78]]的内容,基本上,任何子字符串都与模式匹配。如果您想从包含
abc
的任何括号开始,为什么不将
[abc][y78]
也包括在您的结果中?
['[abc]', '[abc]']