最赞回答 / 为何_
小括号代表使用了分组,正则语法就是这样,不必纠结.就像python遇到xxx()就知道是调用函数一样.\1 等于 前面括号里的匹配规则,就相当于 ([\w]+>)\1 = ([\w]+>)[\w]+>两次这个匹配规则.你可以理解成\1是个变量,保存了前面括号里的匹配语法并使用 即 \1 = (匹配语法), 使用\1 就是使用括号里语法 有帮助的话请给个最佳回答
2019-12-22
最新回答 / 大龙猫_
网页更新了,你可以这样写:r'src=//.+\.jpg' , buf 先把//双斜杠打头的这些给抓出来,再在前面加上 added_str = 'http:'再操作就行了
2019-09-27
ma = re.match(r'(<)([\w]+>)\1\2', '<book><book>') 等价于 ma = re.match(r'(<)([\w]+>)<book>', '<book><book>')
print(ma.groups())
# ('<', 'book>') \1 表示< \2 表示 book>
print(ma.groups())
# ('<', 'book>') \1 表示< \2 表示 book>
2019-07-28
ma = re.match(r'<([\w]+>)', '<book>')
print(ma.groups()) # ('book>',)
ma = re.match(r'<([\w]+>)\1', '<book>book>')
print(ma.groups()) # ('book>',)
ma = re.match(r'(<)([\w]+>)\1\2', '<book><book>')
print(ma.groups()) # ('book>',)
('book>',)
('book>',)
('<', 'book>')
print(ma.groups()) # ('book>',)
ma = re.match(r'<([\w]+>)\1', '<book>book>')
print(ma.groups()) # ('book>',)
ma = re.match(r'(<)([\w]+>)\1\2', '<book><book>')
print(ma.groups()) # ('book>',)
('book>',)
('book>',)
('<', 'book>')
2019-07-28
“ma = re.match(r'<([\w]+>)\1', '<book>') ”中 “\1”代表的就是括号里面的分组,而括号里面的分组自身出现了一次,所以这行代码的分组一共出现了两次。但逗号后面的字符串却只包含一个分组,所以匹配失败,print(ma.groups())返回 NoneType。改为ma = re.match(r'<([\w]+>)', '<book>') 或者 ma = re.match(r'<([\w]+>)', '<book>book>') 就可以了。简而言之,\1表示的是第一个分组的复用。如果有多个圆括号,即有多个分组,那么\num代表的是第num个分组的复用。
2019-07-28