Python re (?=...) (?!...) (?:...) 请路过的回答下 谢谢

M0521 2010-03-12 09:26:15
通俗的解释下 谢谢!
...全文
1760 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
thy38 2010-03-13
  • 打赏
  • 举报
回复
我看的是《精通正则表达式》,它的术语叫:正向环视、逆向环视。

补充LS没说的:(?:...)是非捕获型括号。

其实LZ看Python的re模块文档就全知道了
M0521 2010-03-13
  • 打赏
  • 举报
回复
谢谢各位的帮助!
我有看Python 文档 自己动手写点demo理解的可能快点 下面是我自己的写的



print 'begin'
print '找出整数'
#L------------------------------------------------R
search_job(r"(?:[a-z]*)[1-9]+","defg1234abcd1234") #wrong
search_job(r"(?:\d+)","defg1234abcd1234")
search_job(r"(?=[a-z]*)[1-9]+","defg1234abcd1234")
search_job(r"(?![a-z])[1-9]+","defg1234abcd1234")
search_job(r"(?<=-)\d+","deferrr-1234abcd-5678")
search_job(r"(?<!\d)\d+","deferrr-1234abcdxx@@@@-5678")
findall_job(r"(\w+[.](?!bat[\w|\t]+|exe[\w|\t]+)\w+)","simplex.bat pg.batx pen.bat ogoo.exe red.exers mouse.exe kl.exe er")



luotuo512 2010-03-12
  • 打赏
  • 举报
回复
再给你个有例子的链接。
http://liangzhuoyao.blog.51cto.com/808081/167615
luotuo512 2010-03-12
  • 打赏
  • 举报
回复
哈哈哈哈,我今天刚看的这些。
以下是转载的。

零宽度断言

关于零宽度断言有多种叫法,也有叫环视、也有叫预搜索的,我这里采用的是 MSDN 中的叫法,关于零宽度断言有以下几种:

(?= 子表达式 ): 零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如, 19(?=99) 与跟在 99 前面的 19 实例匹配。

(?! 子表达式 ): 零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如, (?!99) 与不以 99 结尾的单词匹配,所以不与 1999 匹配。

(?<= 子表达式 ): 零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如, (?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。

(?<! 子表达式 ): 零宽度负回顾后发断言。仅当子表达式不在此位置的左侧匹配时才继续匹配。例如 (?<=19) 与不以 19 开头的单词匹配,所以不与 1999 匹配。

37,722

社区成员

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

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