|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lzb1001 于 2022-4-28 14:30 编辑
同样是删除[#]的中括号[],为什么……
---以下开启verbose返回None?
import re
charref = re.compile(r''' # r + '字符串' = 原始字符串
&# # 开始数字引用
(
0[0-9]+ # 八进制格式
|[0-9]+ # 十进制格式
|x[a-zA-Z0-9]+ # 十六进制格式
)
; # 分号结尾
''', re.X)
'''
十进制数字10的进制值依次如下:
 ---8进制
---10进制

 ---16进制
'''
t1 = charref.match('')
print(t1)
t2 = charref.match(' ')
print(t2)
t3 = charref.match('
')
print(t3)
运行后结果如下:
None
None
None
------------------------------------------
---以下未开启verbose可以正确返回!
import re
charref = re.compile('&#(0[0-9]+|[0-9]+|x[a-zA-Z0-9]+);')
'''
十进制数字10的进制值依次如下:
 ---8进制
---10进制

 ---16进制
'''
t1 = charref.match('')
print(t1)
t2 = charref.match(' ')
print(t2)
t3 = charref.match('
')
print(t3)
运行后结果如下:
<re.Match object; span=(0, 6), match=''>
<re.Match object; span=(0, 5), match=' '>
<re.Match object; span=(0, 5), match='
'>
【问题】:
1、为什么会不一样的结果?
2、&、#、[ ]的作用?#和[#]的区别?
因为开启 verbose 的话,# 就被当成注释的标志,你应该加个 \ 来转义
对你的代码修改如下(修改了第四行):import re
charref = re.compile(r''' # r + '字符串' = 原始字符串
&\# # 开始数字引用
(
0[0-9]+ # 八进制格式
|[0-9]+ # 十进制格式
|x[a-zA-Z0-9]+ # 十六进制格式
)
; # 分号结尾
''', re.X)
t1 = charref.match('')
print(t1)
t2 = charref.match('
')
print(t2)
t3 = charref.match('
')
print(t3)
|
|