找回密码
 加入
搜索
查看: 674288|回复: 1825

[原创] Au3.REHelper_正则助手[220624更新1.7.6]

 火... [复制链接]
发表于 2010-10-29 17:02:09 | 显示全部楼层 |阅读模式
本帖最后由 afan 于 2022-6-24 12:07 编辑


20220624 更新 1.7.6
        [修改]自适应支持繁体中文系统



本软件为想更好的学习和测试 AutoIt3 的正则表达式的Au3同好而编写,主要功能及特色如下:



        ①支持多标签多任务操作
        这个是本工具的特色之一,可以对每个测试项目以标签的形式显示,并可以对标签进行常见的操作:
        点击新建或打开一个项目(或在启动后的初始界面大白板处双击)即可开启第一个页面,此时因为只有一个标签项目,故将其标签行隐藏,以获得更大的操作空间。当有第二个标签页创建时标签行即会显示出来,便于操作。对于标签的操作可以实现新建、切换、关闭、重命名等常规操作,还可以双击标签关闭、双击标签行空白处新建、复制一个相同内容的标签、在标签上右击弹出菜单等。
        您还可以重复开启本软件来进行多窗口多标签的操作。
        多标签、多窗口、标签的复制功能无疑对同一项目用不同的表达式来测试来比对结果提供了十足的便利让学习和测试正则更为直观。
        ②任务(项目)可保存为项目文件(*.a3e),并可关联项目文件到本工具
        对需要保存的项目进行保存,使之成为一个独立的测试文档,这对正则学习资料的组织、查看、编辑等操作提供了很强的方便性。项目文件存储了测试源字符串、表达式的相关数据、变量数据、笔记记录等相关信息。
        可选的关联项目文件,也是本软件的方便之处,在第一次启动本软件时即自动关联*.a3e文件(当然您需要有写注册表的权限),如果不需要此功能也可在选项中进行取消。在关联了项目文件之后,以后只需直接双击a3e文件即可打开,如果已打开有本工具的窗口,它会自动以标签形式追加到最后开启的本工具的窗口中,(为了不影响可能还会打开其它项目文件的操作,本工具不会被激活到前台)
        ③支持直接拖放(多个、任意类型文件)到界面,或选择打开文本或获取网页源码到源字符框
        拖放多个文件到界面时会自动进行筛选,a3e文件不用说,直接载入全部数据,非a3e文件将读取其到测试源字符串。不推荐拖入非文本格式的文件(如EXE文件)等,那样获取的字符串将没有意义。
        您也可以选择在菜单或工具栏中导入一个文本文档或选择输入网址获取源码等操作,当然获取网页源码需要网络正常。
        在获取网页源码时有时候会遇到乱码的结果,那是因为网页的编码格式各有不同,本工具并没有自动判断编码的功能,而一律使用ANSI编码,所以遇到非ANSI编码的就会乱码。正式版添加了可在网址最后+空格+编码标志的功能,解决了此问题。编码标志为:1=ANSI; 2=UTF16小; 3=UTF16大; 4=UTF8) 默认=1,无需添加标志1
        ④在表达式输入时可自动弹出匹配表达式的预定表达式列表供直接选择
        在表达式输入某字符时,本工具会自动在已定义的表达式列表中进行匹配,将匹配的结果作为待选以列表的形式在输入框下方显示出来,方便直接选用自动输入到输入框中,对于替换模式,它还会自动分离出“替换”部分的字符串,自动输入到“替换”输入框中。您可以根据需要事先在选项中定义这些列表。当然这也是一个可选项目,在选项中可进行关闭。关闭的话学习会少一点依赖性,印象更深。对于正则一窍不通的它则起到了很好的查询作用,而对于轻车熟路的它无疑能提高工作效率。
        另外,表达式的输入控件样式也可自由选择“Input 输入框”或 “Combo 下拉框”样式,满足不同编辑习惯。当然,它们都支持“自动弹出匹配表达式列表”。
        小技巧:输入“*”可以弹出所有的列表。
        ⑤在匹配模式下可选择编辑框或列表视图来显示结果
        以编辑框显示时会在每一个匹配前加上[数组的下标],在匹配的结尾以[完毕]来结束,避免最后的匹配包含了空行而不易察觉。(注,编辑框的模式更便于复制)
        很多时候我们都需要以列表的方式查看结果,在脚本中我们习惯用_ArrayDisplay()来查看匹配结果。但显示效果却有些不尽人意~(貌似也不会自动调整列宽,还得手动去拉扯查看较长的项目),然而在需要多列显示的时候用_ArrayDisplay()就不好办了,您不至于先定义一个二维数组再调用吧:)。本工具可以帮您完成这些需要繁琐设置达到的效果,在列表视图下可以设置项目数量、起始索引、结束索引、步进值等相关参数,显示结果一目了然。它能自动调整项目宽度(当然也设置了一个限度,不会让单个选项超出窗口范围过大)。在输入参数时会自动判断无效的输入,比如非数字,索引超出数组范围等。在输入项目数量时还会智能判断输入的值是否大于步进值,大于时会自动调整步进值为(正或负)的项目值(因为如果项目数量大于步进值的话会有重复的项目)。加之本工具默认的使用记事本字体,能在列表中清晰的显示是否匹配到回车换行(会以小黑块显示)
        有此两种显示输出,几乎可以完美的得到想要的显示结果。注意,在替换模式下,会强制使用编辑框显示,且禁用列表视图。因为在替换模式下没有数组的输出。
        小提示:
        如果使用默认字体,在以编辑框显示时,且@CR或@LF单独出现时(前后没有@LF或@CRLF),会以小黑块显示(注:输出显示时由于重新编辑过[后面加了@CRLF],因此如果是末尾的@CR则不会显示小黑块)。
        如果使用默认字体,使用列表显示输出,其会对任意的@CR、@LF、@CRLF以小黑块显示(@CRLF为2个小黑块)。
        ⑥可直接对测试字符串进行查找
        这是个类似记事本的查找功能,不过比它更强大,可选择常规或正则查找,并显示其匹配字符位置。此功能对于测试正则起到了很好的辅助作用,它可以逐一对匹配的字符串高亮显示,同时会在标题栏显示字符位置,可以让您知晓在匹配模式下的偏移量。具体的作用,您深入后便知。
         
        ⑦表达式支持变量书写方式(此设置变量功能仅供注册版使用)
        在表达式中经常要用到变量或宏(比如比较长的表达式为了更好的组织;本身有代入变量或宏的需求等),这在脚本中书写很容易,而在输入框中就比较麻烦了,至少我为此折腾了比较长的时间… 常规的方式无法在输入框中既表达字符串又表达变量,而最关键的是表达式中任何字符都有匹配意义(包括引号),这使得无法用在脚本中的书写格式来完成。
        好在正则表达式中有个(?#注释字符)的功能,(注,(?#...)中的...不能为“)”闭括号,因为引擎会自动判断“(?#”之后的第一个闭括号)对于表达式中的(?#...),其搜索引擎会直接无视,利用这一点,我们可以在(?#...)中书写变量来实现。格式为 (?##$变量名) 或 (?##@宏名),多加一个#是为了区别于注释。如以下例子:
        先点击中部控制区的最右侧“变量”,在变量设置窗口中写入:$a = 'xxx'
        然后,在表达式中输入 aaa(?##$a) b(?##@ScriptDir)(?##$b)(?#$c)
        这样的结果等同于脚本的书写 "aaa" & $a & " b" & @ScriptDir & "(?##$b)(?#$c)"
        原理是本工具会先获取定义的变量,再在输入框中匹配,对于没有定义的变量(如上面的(?##$b)中的$b没有事先定义),或格式不符的((?#$c)只有一个#号)它会直接以源字符串匹配,当然也就会被搜索引擎作为注释而无视。
        正式版已经支持更多的变量书写格式:允许前缀(如Dim、Local等)、允许注释、允许嵌套、允许续行符等。如以下书写格式均可:
        Local $a
        Dim $b = ''
        $c = 1
        $d = $a & $b + Number($c) ;这里是注释
        $e = @CRLF
        $f = 'aaa' & @ScriptDir & $a & @LF & 1
        $g = 'abc' & _
                @CR & _
                $c
        ;等等

        另外正式版还增加了变量代入表达式之前可选择先转义字符的功能,原因如下:
        某些变量或宏的值中含有特殊字符(如\[]{}等),如果不先转义(前面加\),将无法正确匹配或替换。如 @ScriptDir 宏。此时勾选“变量代入表达式之前先转义字符”即可正常匹配。
        有时候我们在使用较长的表达式时原始字符时不想逐个进行判断是否需加转义符,那么你可以在前面加上\Q,后面加上\E。当然更可以将表达式的部分或全部设置成变量,并勾选转义即可免除这些麻烦。
        
        利用以上的变量及转义功能,可以实现很多在普通界面很难实现的功能,也可另之后需要的生成脚本输出井然有序的代码。
        ⑧可自定义各编辑框、输入框等控件的字体
        在选项中可进行字体选择,默认使用记事本样式,原因很简单:
        1,本人的习惯。本人习惯用记事本写脚本,也因此习惯了记事本所使用的“Fixedsys”字体,它的字体大小及缩进等都很适中。
        2,记事本字体对单个的回车或换行符会以小黑块明示,让您不会捕捉到了它们而不知情,而使用其它字体则不会有这样特殊的显示模式。但同时需要注意的是,记事本字体不光对上面所说的回车换行以小黑块显示,对于韩文等它也会以同样的小黑块显示。这时,您可能就需要使用其它字体了,常见的宋体、微软雅黑都可以。
        当然,设置字体样式的同时,还可设置字体的大小、颜色、权值等,看您的爱好了。设置之后会即时刷新界面。
        ⑨可将测试生成au3脚本文件(仅供注册版使用)
        这个是很具实用的功能,本工具可以将当前测试的源字符串、变量、表达式等均完美的组织成脚本,即可单独使用,也可代入到其它的脚本中使用,免去了不必要的重复劳动。
        您也可以仅使用其生成的部分脚本,如源字符串被组织后的变量,也很方便在需要的地方调用之。因为它对源字符串进行了精确的分析,特别是很影响引用的回车换行@CRLF、单独的回车@CR、单独的换行@LF、单双引号的混搭等。本人曾做过比对,对某个如上所述的混搭文本进行脚本输出,然后使用其生成的 $str 进行新文件写入,再用其它专门的软件进行比对,比对的结果是“完全一致”。
        ⑩其它功能介绍
        1,可随意调整界面大小
        一般默认的界面大小即可满足一般使用,而对于源字符串较多的情况下那当然还是推荐您最大化窗口操作,让您面子更大,操作也更方便。除界面可随意拉扯大小外,中央控制区(中部的长条区)也是可随意上下拉扯进行调整的,满足不同情况下的操作。
        2,可随时切换本窗口置顶属性(默认不置顶)。
        3,打开项目文件的历史记录,方便下次查看。
        4,可对每个项目进行笔记记录
        点击工具栏的笔记按钮,会出现笔记子窗口,上面的输入框可输入笔记的标题,此标题会反映在状态栏的最右一栏。每个标签均关联独立的笔记内容,在学习过程中养成笔记的习惯便于日后查询,更为上传与大家交流经验提供了便利,当然,您需要有热心和耐心~
        5,帮助界面
        点击工具栏的帮助按钮会弹出帮助子窗口,内容为网页形式的帮助文档(包含表达式的匹配字符的相关定义),基本采用了Au3自带的由前辈们翻译的关于StringRegExp函数中的资料。也补充了其它的网上链接。这样您在学习正则时就不必再打开一个Au3的帮助文档了。



(注:贴图及说明为1.0.0.0版本。)

基本操作1,创建或打开一个页面


基本操作2,开启一个或多个页面后的操作


基本操作3,可更改界面字体及样式

基本操作4,可调整窗口大小及腰部比例


基本操作5,界面信息介绍





这里有热心会员 lchl0588 编写的界面操作的帖子,比我写得详细,大家可以参考下 - 九张图说明” Au3.REHelper_正则学习与测试助手”
软件下载与更新历史


游客,如果您要查看本帖隐藏内容请回复

注:任何新版本均可使用原来的配置文件(即:将历史版本改名或删除,将新版放置在相同目录即可),已注册的无需再注册。目前已截止注册。
软件目录说明:
EXE主程序 + “Project”项目文件夹(配置文件自动保存在“Project”文件夹中)及里面的两个例子项目文档。
测试环境:WinXP sp3 x86、Win7 x86

更新历史:   (蓝色字为此次更新)

20220624 更新 1.7.6
        [修改]自适应支持繁体中文系统


20200528 更新 1.7
        [修正]启动时未新建标签页,则热键失效的问题
        [修改]优化中部控件随窗口尺寸变化的逻辑:
           非输入控件将保持大小不变,以将扩展宽度全部赋予输入控件

20200420 更新 1.6
        [修正]关联项目图标不正常的问题
        [修正]WIN10系统拖入文件无效问题
        [修改]默认启动时为无标签空白页,现改为新建标签页,且导入剪贴板
        [修改]默认表达式输入控件改为输入框
           因为 ComboBox 处于激活状态时,若滚动滚轮会覆盖当前的表达式,还是Input更好
        [新增]输出去除首行###描述;并增加一项“仅输出表达式到剪贴板”
        [新增]在光标处于替换输入框时,按下F12可插入一个回车换行变量(F11插入一个TAB空格)
        [修正]匹配标志为0时,输出的脚本中变量名输出错误

2016/01/28 更新至 1.5.1 正式版
        [修正]应用选项时可能会造成配置文件失效
        [修改]Win7下“输出”文字未显示的问题
        [修改]增加修改几处下拉框项目描述
        [修改]首次启动时不再打开关于窗口
        [修正]启动时未新建标签页,则热键失效的问题

2015/12/21 更新至 1.5 正式版
        [新增]主菜单增加“使用当前版本”项目,可使用系统当前的Au3版本执行测试
           这是一项很实用的功能,只有懂的人懂 ^ ^
        [新增]工具栏添加“在浮窗中编辑表达式”按钮,可在弹窗中编辑表达式
           可切换使用该控件,以使表达式更好的组织,因为可以换行,并可忽略空白

2015/11/12 更新至 1.4 测试版
        [修改]笔记窗口可随意拉扯窗口
        [修正]编辑变量名时,如前面含有Local、Dim、Global字符时无法保存到项目文件的问题
        [修正]变量赋值时,如在非末尾处含有"$"字符,则会输出无意义字符串的问题

2015/11/10 更新至 1.3 测试版
        [新增]输出保存为au3文件增加下拉菜单,可保存到剪贴板
        [修改]输出au3脚本文件时,如遇同名文件不再重复询问

2013/04/24 更新至 1.2 测试版
        [修改]判断载入较大文件或字符串,或获取网页源码时才启动闪屏提示
        [修改]取消限制,某些功能无需注册
        [修改]Ctrl-F 搜索默认改为常规方式

2013/04/20 更新至 1.1 测试版
        [修正]载入大文件或字符串时可能丢失下方“输出结果编辑框”的问题
        [修改]增加载入文件或字符串时闪屏提示
        [修改]大幅提高载入大文件时的速度
        [修改]拖入文件时闪烁窗口修改为系统默认的次数及间隔时间(之前的较强烈了点…)
        [修改]切换匹配及替换模式时不修改状态栏提示,以保存原有数据可做比较。
        [新增]Ctrl-F 也可于输出编辑框中查找。
        [修改]部分代码调整及优化

2010/11/22 更新至 1.0.0.0 正式版
[修改]匹配模式下,切换匹配标志0-4时(下拉选择或使用上下箭头切换或直接按0-4数字键),可直接返回数据。
[修改]状态栏的(耗时xxxms)显示改为在1000ms以内时显示小数(如:耗时0.123ms、耗时123.4ms、耗时1234ms)。
[增加]增加注册版功能:“输出脚本”及“设置变量”需软件注册才能使用。
   免费注册,仅为了统计下此两种限制功能的使用率;也没有与硬件挂钩,以便U盘或网吧亦可使用注册版功能。

2010/11/16 更新至 0.9.9.8 版
[修改]支持Win7(之前的版本图标及界面显示不正常)
[增加]获取源码时可输入编码标志(输入格式:网址URL+空格+编码标志),解决乱码问题。
[修改]在匹配模式下,如果标志为4,其结果是每个元素又都是数组。因此对每个元素内的数组分别输出显示,格式为:
   [匹配的数组元素]=> [元素中的数组元素](注:标志4不支持列表查看)

2010/11/12 更新至 0.9.9.6 版
[修正]在无标签时选择列表输出会在创建标签后列表输出无效。
[增加]工具栏增加“输出脚本”、“选项设置”按钮。

2010/11/09 更新至 0.9.9.4 版
[修正]取消“开启执行结果声音提示”无效的问题。
[修正]在某些主题下工具栏的按钮文字“打开”、“退出”可能会显示不全的问题。

2010/11/07 更新至 0.9.9.3 版
[修改]新项目保存或另存项目时,同时添加此项目到打开文件的历史记录。

2010/11/05 更新至 0.9.9.2 版
[修正]热键在某些情况下(测试发现为最小化时)与其它软件热键的冲突问题。感谢 水木子 的指出
[修改]加宽了设置变量子窗口界面,方便编辑。
[增加]增加了变量代入表达式之前可选择先转义字符的功能,原因如下:
   某些变量或宏的值中含有特殊字符(如\[]{}等),如果不先转义(前面加\),将无法正确匹配或替换。如 @ScriptDir 宏。

2010/11/04 更新至 0.9.8.8 版
[修改]工具栏上的退出下拉菜单中的“退出前先保存修改的项目”修改为不再弹出确认是否保存的对话框,因为用户已经指定了先保存。
   其它的退出方式不变,如窗口的关闭按钮、主菜单的关闭退出均会在有修改时提醒用户先保存。
[修改]变量的书写格式修改增强支持为:允许前缀(如Dim、Local等)、允许注释、允许嵌套、允许续行符

2010/11/03 更新至 0.9.8.3 版
[修正]“关于”窗口、“选项”窗口可重复打开多个而造成无法关闭的问题。 感谢 Duvet 的指出
[修改]在打开项目、导入文本、打开文件、输出脚本、保存文件时均会使用相应类型的上次使用的文件夹。感谢 Duvet 的建议

2010/11/02 发布
[发布]发布第一个测试版 0.9.8.1 版。(164截止下载)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 31威望 +52 金钱 +1404 贡献 +276 收起 理由
chishingchan + 2 + 50 + 10 赞一个!
lpxx + 80 + 20 补分
xz00311 + 10 很给力!
heavenm + 80 + 20 输出信息太多了,能单条的话更好!
zhouhaijin + 10 好东西

查看全部评分

发表于 2018-2-27 09:35:28 | 显示全部楼层
this is useful tool, thanks
发表于 2010-10-29 20:00:10 | 显示全部楼层
来支持下,不懂正则

给大家个小教程,不懂唉

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-10-29 21:40:12 | 显示全部楼层
本帖最后由 水木子 于 2010-10-29 21:45 编辑

终于要问世啦?非常期待哦!
光看介绍就知道非常强大!真是正则学习者的福音啊!前辈辛苦了!


不过感觉填写原字符那控件是不是太矮了?不知是否可以调整?
 楼主| 发表于 2010-10-29 22:03:01 | 显示全部楼层
终于要问世啦?非常期待哦!
光看介绍就知道非常强大!真是正则学习者的福音啊!前辈辛苦了!


不过感 ...
水木子 发表于 2010-10-29 21:40


唉,看来纯文字还是很枯燥滴,没坚持看完吧…
   
⑩其它功能介绍
 1,可随意调整界面大小
 一般默认的界面大小即可满足一般使用,而对于源字符串较多的情况下那当然还是推荐您最大化窗口操作,让您
 面子更大,操作也更方便。除界面可随意拉扯大小外,中央控制区(中部的长条区)也是可随意上下调整的
 满足不同情况下的操作。
上面的图就是向上调整过的  O(∩_∩)O哈!
发表于 2010-10-29 22:24:24 | 显示全部楼层
本帖最后由 水木子 于 2010-10-29 22:26 编辑

回复 4# afan
看了前面的主要功能介绍,有些地方看不太明白,实在太专业了,有点晕了。
发表于 2010-10-29 22:45:52 | 显示全部楼层
完全不懂正则!顶力支持!
发表于 2010-10-30 12:32:48 | 显示全部楼层
做的不错,支持一下
发表于 2010-10-30 21:07:47 | 显示全部楼层
A版出品,必属精口
发表于 2010-10-30 21:23:31 | 显示全部楼层
这个必须顶~~我特别喜欢第二条
发表于 2010-10-30 21:45:02 | 显示全部楼层
正则很强大,有条件一定要学
发表于 2010-10-30 22:43:56 | 显示全部楼层
可能有人要说了,一个简单的工具何必做得这么复杂。是的,我是蛋疼了点,但这里的复杂就是为了使用时的简单~ 想想也不容易,一个并不难的工具本人竟然花费了一个月的时间,纯手工打造的4千多行代码,以及大量的烟草。原因很简单,本人只是个未学习过任何编程语言的菜鸟…

深有同感,不过编写的复杂代码往往就是为了使用者更简单的学习,仅仅凭这一条就值得大家尊敬
毕竟这是一腔热血之作
相信afan在写本工具的时候更过的是在考虑使用者和学习正则者在实际中的种种困难和疑惑
而此作恰恰就是为了让那些见正则就望而止步的新手看到了更轻松更快捷的学习方式
如此之作,岂能不能道贺一番??

评分

参与人数 1金钱 +10 收起 理由
tryhi + 10

查看全部评分

发表于 2010-10-30 22:54:34 | 显示全部楼层
正则毫无疑问是一个好东西
AU3的字符串操作时非常强大的
而这种强大在很多情况下都能体现出来
比如匹配指定文档的特定字符、匹配网页特定内容、GUI显示特定字符、模糊搜索文档、替换特定相似内容....太多太多的时候都要用正则了
所以想要掌握用AU3快速、高效地处理文本数据
正则是一道必须趟过的关
希望afan即将面世的工具和相关教程还有非常有特色的自制例子(上传a3e项目文档)都能帮助大家在正则学习道路上走得更远
afan如此心血之作应该得到大家的尊敬
难道不是吗?
发表于 2010-10-30 23:14:57 | 显示全部楼层
顶一下,期待中。
发表于 2010-10-30 23:47:21 | 显示全部楼层
afan兄辛苦,期待大作。
发表于 2010-10-31 02:56:04 | 显示全部楼层
期待。。。。支持。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-25 13:58 , Processed in 0.089030 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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