|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 新学 于 2020-10-13 15:24 编辑
一个关于()\序号的子组问题
- # 我想匹配的是 'python1 python2.7 python3.8.9 ’,希望得到的结果是 [('python3.8.9 ','python3.8.9')]
- >>> re.findall('((python[\d.]*)[ ]*)\2', 'python1 python2.7 python3.8.9 c++9.80')
- [] # 但是这里却返回一个空列表,我到底哪里理解错了,于是做了如下尝试
- >>> re.search('((python[\d.]*)[ ]*)\2', 'python1 python2.7 python3.8.9 c++9.80') # 匹配不到
- >>> re.search('((python[\d.]*)[ ]*){1,}', 'python1 python2.7 python3.8.9 c++9.80')
- <re.Match object; span=(0, 30), match='python1 python2.7 python3.8.9 '> # 能匹配到具体字符串
- >>> re.findall('((python[\d.]*)[ ]*)((python[\d.]*)[ ]*)((python[\d.]*)[ ]*)', 'python1 python2.7 python3.8.9 c++9.80')
- [('python1 ', 'python1', 'python2.7 ', 'python2.7', 'python3.8.9 ', 'python3.8.9')] # 将匹配到的字符串转化为一个包含各层子组的元组
- >>> re.findall('((python[\d.]*)[ ]*)+', 'python1 python2.7 python3.8.9 c++9.80')
- [('python3.8.9 ', 'python3.8.9')] # 将匹配到的字符串转化为一个只包含最后一个嵌套子组的元组
- >>> re.findall('((python[\d.]*)[ ]*){1,}', 'python1 python2.7 python3.8.9 c++9.80')
- [('python3.8.9 ', 'python3.8.9')]
- >>> re.findall('((python[\d.]*)[ ]*){3}', 'python1 python2.7 python3.8.9 c++9.80')
- [('python3.8.9 ', 'python3.8.9')]
复制代码
我认为()\2应该与(){3}一样才对呀,怎么会这样? |
|