关于正则表达式python

ttt9107 2013-07-15 02:06:50
strTest = '<b>dfd</b>' 
strRe = r"(?<=<(\w+)>).*(?=</\1>)"
reObj = re.compile(strRe)
print reObj.findall(strTest)



结果出现 raise error, v # invalid expression,strRe = r"(?<=<(\w+)>).*(?=</\1>)"这个表达式有什么问题?
...全文
340 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttt9107 2013-07-15
  • 打赏
  • 举报
回复
引用 2 楼 snmr_com 的回复:
测试了一下(python 3.3) sre_constants.error: look-behind requires fixed-width pattern 所以要改成 strRe = r"(?<=<(\w)>).*(?=</\1>)" # 去掉\w后面的加号 另外: 建议安装一个叫regex的模块替代原有的re,这个regex修正了re不少的bug,也能兼容你原来的那句语法不报错 只要 import regex as re 就跟内置的re用法一样了
去掉+号后的确没有语法错误了,但是如果测试如<html>test</html>多字符标签就不行了,另外一种安装模块的方法还没尝试,谢谢了
ImN1 2013-07-15
  • 打赏
  • 举报
回复
测试了一下(python 3.3) sre_constants.error: look-behind requires fixed-width pattern 所以要改成 strRe = r"(?<=<(\w)>).*(?=</\1>)" # 去掉\w后面的加号 另外: 建议安装一个叫regex的模块替代原有的re,这个regex修正了re不少的bug,也能兼容你原来的那句语法不报错 只要 import regex as re 就跟内置的re用法一样了
ImN1 2013-07-15
  • 打赏
  • 举报
回复
改用单引号试一下

37,738

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧