鱼C论坛

 找回密码
 立即注册
查看: 1250|回复: 3

为何一个可以返回,另一个返回错误?看得眼都花了,还找不出代码有何不同……

[复制链接]
发表于 2022-5-20 23:51:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
WIN10/PYTHON3.7.6

---以下代码1----

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)

运行后返回如下:

<re.Match object; span=(0, 6), match='&#012;'>
<re.Match object; span=(0, 5), match='&#10;'>
<re.Match object; span=(0, 5), match='&#xA;'>


----以下代码2-------

import re

charref = re.compile(r'''&#160;&#160;# r + '字符串' = 原始字符串
&\#&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;# 开始数字引用  #前应加上反斜杠\
(
&#160; &#160; 0[0-9]+&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160; # 八进制格式
&#160; &#160; |[0-9]+&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160; # 十进制格式
&#160; &#160; |x[a-zA-Z0-9]+&#160; &#160;&#160; &#160;&#160; &#160;# 十六进制格式
)
;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;# 分号结尾
''', re.X)

t1 = charref.match('&#012;')
print(t1)

t2 = charref.match('&#10;')
print(t2)

t3 = charref.match('&#xA;')
print(t3)

运行后返回如下:

Traceback (most recent call last):
  File "D:\work\12345.py", line 11, in <module>
    ''', re.X)
  File "C:\Users\dell\AppData\Local\Programs\Python\Python37\lib\re.py", line 234, in compile
    return _compile(pattern, flags)
  File "C:\Users\dell\AppData\Local\Programs\Python\Python37\lib\re.py", line 286, in _compile
    p = sre_compile.compile(pattern, flags)
  File "C:\Users\dell\AppData\Local\Programs\Python\Python37\lib\sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "C:\Users\dell\AppData\Local\Programs\Python\Python37\lib\sre_parse.py", line 938, in parse
    raise source.error("unbalanced parenthesis")
re.error: unbalanced parenthesis at position 176 (line 7, column 1)


【我的问题】

两个代码没看出什么不同?为何返回结果不同?

请大家一起帮忙看看,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-20 23:54:05 | 显示全部楼层
本帖最后由 lzb1001 于 2022-5-21 00:02 编辑

刚发现怎么代码2复制黏贴过来多了那么多空格?奇了怪了……


import re

charref = re.compile(r'''  # r + '字符串' = 原始字符串
&\#                       # 开始数字引用,#前应加上反斜杠转义
(
    0[0-9]+                # 八进制格式
    |[0-9]+                # 十进制格式
    |x[a-zA-Z0-9]+         # 十六进制格式
)
;                          # 分号结尾
''', re.X)

t1 = charref.match('&#012;')
print(t1)

t2 = charref.match('&#10;')
print(t2)

t3 = charref.match('&#xA;')
print(t3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-21 06:10:25 From FishC Mobile | 显示全部楼层
lzb1001 发表于 2022-5-20 23:54
刚发现怎么代码2复制黏贴过来多了那么多空格?奇了怪了……



使用代码框发代码吧,看不了啊,迷魂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-5-21 10:59:10 | 显示全部楼层
wp231957 发表于 2022-5-21 06:10
使用代码框发代码吧,看不了啊,迷魂

找到原因了,应该就是复制的时候不知道为什么多了很多空格导致
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 00:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表