找回密码
 加入
搜索
楼主: binghc

[系统综合] [已解决]谈谈au3正则中的括号

 火.. [复制链接]
 楼主| 发表于 2010-10-18 20:53:26 | 显示全部楼层
回复 30# afan


    呵呵,版主辛苦啦!
这个问题其实很容易,很多语言会对正则进行功能扩展:
我想你的意思应该是把年前面的数字和这个年字一起屏蔽掉;
其实可以用StringRegExpReplace这个函数:StringRegExpReplace($str, '\d+年','')
然后再用正则分解
 楼主| 发表于 2010-10-18 20:57:34 | 显示全部楼层
下面给出解法二:
本解法更干净利落:
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1贡献 +5 收起 理由
afan + 5

查看全部评分

发表于 2010-10-18 21:02:31 | 显示全部楼层
回复  afan
...
可以用StringRegExpReplace这个函数...
binghc 发表于 2010-10-18 20:53


替换当然是可以的(我惯用的),我指的是现在这个题目,用匹配模式,估计是没这个搞法了~
   
下面给出解法二:
本解法更干净利落:
...
binghc 发表于 2010-10-18 20:57


学习了~
 楼主| 发表于 2010-10-18 21:13:27 | 显示全部楼层

其实解法二还可以再做一下优化,非捕获括号换成固化分组:
(?:....)改成(?>...)
这样在能匹配的的情况下效率是一样的,但是如果不能匹配,使用固化分组能快速报错,避免不必要的回溯。
 楼主| 发表于 2010-10-18 21:23:19 | 显示全部楼层
本帖最后由 binghc 于 2010-10-19 12:05 编辑

现在回头看看我们的表达式,如果把表达式中的(?:...)直接改成(...)(确实,如果非必须,使用非捕获括号要比捕获括号效率快),然后再对整个表达式上括号会怎样:
[01]1许多2个时候,美是一种距离
[02]2个时候,美是一种距离
[03]2
[04]2站在时8年空之外5月想象你8次会更加美好10000爱情亦如斯
[05]10000爱情亦如斯
[06]10000
[07]3一种憧憬的欣羡的美丽7号一种咀嚼与回味的情韵
[08]7号一种咀嚼与回味的情韵
[09]7号
[10]8号码一种回归与复得的幸福。
我的妈妈呀!这下要找出符合条件的字符串麻烦了!
好了,我对StringRegExp在模式3下捕获型括号的疑问弄懂了,谢谢afan版主!
发表于 2010-10-18 21:36:49 | 显示全部楼层
afan 发表于 2010-10-17 12:42



    请 问 \1 和\2有何作用
我怎么把他们去掉也可以
发表于 2010-10-18 21:43:04 | 显示全部楼层
请 问 \1 和\2有何作用
我怎么把他们去掉也可以
liufenglg 发表于 2010-10-18 21:36



    引用组的内容,\后面是组号。例子中如果源字符串 hig 后面不是 kitty 的话就可以看出区别了

评分

参与人数 1金钱 +30 收起 理由
liufenglg + 30

查看全部评分

 楼主| 发表于 2010-10-18 21:54:42 | 显示全部楼层
本帖最后由 binghc 于 2010-10-18 21:58 编辑

回复 37# afan


补充:括号多的时候也可以用命名捕获,后面的引用将是:\k<name>   (name:之前的命名)


对了你之前发的图片是不是正在写的正则软件。能不能再添个功能,就是让编辑框能对文字大小进行设置。我现在用的,文字有点小,看起来眼睛特别累,都快看花了
发表于 2010-10-18 21:55:42 | 显示全部楼层
引用组的内容,\后面是组号。例子中如果源字符串 hig 后面不是 kitty 的话就可以看出区别了
afan 发表于 2010-10-18 21:43



    谢谢
发表于 2010-10-18 22:29:26 | 显示全部楼层
回复  afan

对了你之前发的图片是不是正在写的正则软件。能不能再添个功能,就是让编辑框能对文字大小进行设置。我现在用的,文字有点小,看起来眼睛特别累,都快看花了
binghc 发表于 2010-10-18 21:54



    早已考虑到这一点,更关键的是因为Edit控件默认的字体不会对 @CR 或 @LF 做出“明示”,所以可以自定义字体、大小、权值、颜色等(同时关联到源Edit框、输入框、结果Edit框等;输出为Listview时暂不考虑自定义),默认使用记事本字体,可以将 @CR 或 @LF 显示为小黑块,避免捕获到了@CR 或 @LF 而“不知情”。。。
 楼主| 发表于 2010-10-18 22:43:25 | 显示全部楼层
本帖最后由 binghc 于 2010-10-18 23:13 编辑

回复 40# afan


那我们就期待你新作品的诞生啦
发表于 2010-10-19 10:23:54 | 显示全部楼层
相当深入的正则讨论!
楼主的正则运用得淋漓尽致,值得学习!

非常期待18楼afan前辈的新作!
发表于 2010-10-19 15:20:36 | 显示全部楼层
;32樓->本帖隐藏的内容需要回复才可以浏览
;ˊˋ要回覆才可看啊?
;那回答一下20樓的問題好了
$str = "1许多2个时候,美是一种距离2站在时8年空之外5月想象你8次会更加美好10000爱情亦如斯3一种憧憬的欣羡的美丽7号一种咀嚼与回味的情韵8号码一种回归与复得的幸福。"
_ArrayDisplay(StringRegExp($str,"\d(?:\D+|\d+号[^码]|\d[年月趟个次]|\d\d+)+",3))

评分

参与人数 1贡献 +5 收起 理由
afan + 5

查看全部评分

发表于 2010-10-21 08:24:50 | 显示全部楼层
很多场合用不着这么伤脑子的正则的,不过用于思维训练,你这道题倒是难倒了很多人。
发表于 2010-10-21 12:45:06 | 显示全部楼层
这个还真不懂~学习一下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 03:49 , Processed in 0.072764 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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