找回密码
 加入
搜索
查看: 2160|回复: 4

[效率算法] 【已解决】正则如何表示一个字符串的"非"

[复制链接]
发表于 2013-3-26 15:46:24 | 显示全部楼层 |阅读模式
本帖最后由 zch11230 于 2013-3-26 17:08 编辑

现在有一文本文档 包含N多0-9A-F的16进制的数据,我需要取所有为非0000的数据
比如
0000
1234
5555
0000
ABCD
0000
12AB
00EF
A01F
0000
观察帮助和查阅资料 没有找到如何表示一个字符串的非 只好列出了该组合的几种可能
#include <array.au3>
Local $array=StringRegExp(ClipGet(),'[1-9A-F][0-9A-F][0-9A-F][0-9A-F]|[0-9A-F][1-9A-F][0-9A-F][0-9A-F]|[0-9A-F][0-9A-F][1-9A-F][0-9A-F]|[0-9A-F][0-9A-F][0-9A-F][1-9A-F]',3)
_ArrayDisplay($array)
现在我需要匹配的位数更多 用组合的方式太麻烦了 请问该如何简洁的表达。
发表于 2013-3-26 16:34:00 | 显示全部楼层
#include <Array.au3>
Local $Str = _
                '0000' & @CRLF & _
                '1234' & @CRLF & _
                '5555' & @CRLF & _
                '0000' & @CRLF & _
                'ABCD' & @CRLF & _
                '0000' & @CRLF & _
                '12AB' & @CRLF & _
                '00EF' & @CRLF & _
                'A01F' & @CRLF & _
                '0000'

Local $Test = StringRegExp($str, '(?:[0-9A-F]*[1-9A-F][0-9A-F]*)+', 3)
_ArrayDisplay($Test, UBound($Test))
 楼主| 发表于 2013-3-26 17:08:04 | 显示全部楼层
感谢A版帮助 中间[0-9A-F]*[1-9A-F][0-9A-F]*理解了 (?:)+去掉结果也一样 不懂用意何在。
发表于 2013-3-26 17:34:55 | 显示全部楼层
回复 3# zch11230


    没注意,忘删了…
发表于 2018-10-14 05:52:35 | 显示全部楼层
練習
(?m)^([^0].+|0[^0].+|00[^0].|000[^0])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 17:27 , Processed in 0.070383 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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