[正则]Expressive正则表达式工具粗汉化并添加函数生成功能——枫丹白露

想法:AutoGui自带Expressive – Regular Expression Tool

[正则]Expressive正则表达式工具粗汉化并添加函数生成功能——枫丹白露

对于新手来说,

第一,英语界面;

第二,测试完了还要自己再写函数,体会一下

FoundPos := RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPosition = 1])

不仅是英文的,而且参数名还特长

修改目标如下

[正则]Expressive正则表达式工具粗汉化并添加函数生成功能——枫丹白露

粗略汉化就不说了

扩展步骤

添加控件

; "Text" section
Gui Font, s9 Bold, Segoe UI
Gui Add, Text, hWndhTextHdr x10 y98 w710 h29 +0x200 +E0x200, %A_Space%文本
Gui Add, Text, hWndhMatchCount x612 y104 w100 h20 Right
Gui Add, Edit,hHdaima vTdaima x10 y450 w710 h120 Multi ;函数代码
Gui Font

生成函数代码

    daima:="正则表达 := """ RegEx """`r`nFoundPos := RegExMatch( 文本 , 正则表达 )`r`n"
    daima:=daima "正则表达 := """ RegEx """`r`nFoundPos := RegExMatch( 文本 , 正则表达 , 输出变量 , 开始位置 )"
    
    GuiControl,, Tdaima, %daima%

感觉自己RegExReplace基本不用,所以没加

匹配数量调整

原版使用RegExReplace,这样1234里找\d\d,只有12、34两个结果,而且英文还有1 Match、2 Matches这种麻烦事

我们直接在搜索过程中计算,这样1234里找\d\d,会有12、23、34三个匹配

    StartPos := 1
    Count:=0
    Loop {
        FoundPos := RegExMatch(SciText, RegEx, Match, StartPos)
        If (Match == "") {
            HighlightAll := False
            Break
        }

        StartPos := FoundPos + 1
        Count+=1
        Length := StrPut(SubStr(SciText, FoundPos, StrLen(Match)), "UTF-8") - 1
        FoundPos := StrPut(SubStr(SciText, 1, FoundPos - 1), "UTF-8") - 1
        Highlight(FoundPos, Length)
    } Until (!HighlightAll)

    GuiControl,, %hMatchCount%,%Count% 个匹配
    ;UpdateCounter(SciText, RegEx)

再进一步

+复制函数代码按钮及热键

+正则提示

+正则收集

+扩展函数代码,处理输出变量

原版及改版:

Expressive

给TA捐赠
共{{data.count}}人
人已捐赠
其他案例

shift+y映射成Pgup,长按y映射为大写Y

2017-12-19 20:59:02

其他

[类][0.51b 1223 2105] AHK 多引擎翻译 API

2017-12-23 8:59:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索