Openser中文网

专注于VoIP,Opensips,Kamailio等技术,QQ群:QQ群:293697898

使用golang做一个windows界面的正则表达式校验工具


tags:OpenSIPS Kamailio FreeSWITCH Go 正则表达式 Regex 创建时间:2023-11-18 13:44:43

首先,如果不想自己编译,可以直接下载已编译好的工具。下载地址:

链接:https://pan.baidu.com/s/15jOZnAkJw13NTUQc-LCOFg?pwd=f9me

提取码:f9me

开发这个功能模块主要是为了用于验证在fsgui中的正则表达式,因为golang的标准的regexp不支持RE2,所以使用了

"github.com/dlclark/regexp2"

这个库用来支持RE2,当然它的支持应该和如拍黄片,如perl有区别,所以如果是用在golang的话,用这个工具会更好一些。

  界面:

代码:

package main

import (
  "strings"

  "github.com/dlclark/regexp2"
  "github.com/lxn/walk"
  . "github.com/lxn/walk/declarative"
)

var HlpText string

func main() {
  var RegTE, ChkTE, RstTE, HlpTE *walk.TextEdit
  MakeHelp()
  MainWindow{
    Title:   "上海宁卫http://nway.com.cn正则测试工具,中英文数字均可",
    MinSize: Size{1200, 900},
    Layout:  VBox{},
    Children: []Widget{

      Composite{
        Layout: Grid{Columns: 2},
        Children: []Widget{
          Composite{
            Layout: Grid{Columns: 2},
            Children: []Widget{
              Label{
                Text: "正则字符串:",
              },
              TextEdit{AssignTo: &RegTE},
              Label{
                Text: "校验字符串:",
              },
              TextEdit{AssignTo: &ChkTE},
              Label{
                Text: "结果:",
              },
              TextEdit{AssignTo: &RstTE, ReadOnly: true},
            },
          },
          Composite{
            Layout: Grid{Columns: 1},
            Children: []Widget{
              PushButton{
                Text: "校验",
                OnClicked: func() {
                  regex_str := RegTE.Text() //正则字符串
                  check_str := ChkTE.Text()
                  if len(strings.TrimSpace(regex_str)) == 0 || len(strings.TrimSpace(check_str)) == 0 {
                    RstTE.SetText("您在逗我玩,用空字符串匹配?")
                    return
                  }
                  re := regexp2.MustCompile(regex_str, regexp2.RE2)
                  if isMatch, _ := re.MatchString(check_str); isMatch {

                    m, e := re.FindStringMatch(check_str)
                    if e != nil {
                      RstTE.SetText("匹配过程出错:" + e.Error())
                    } else {

                      RstTE.SetText("这两个字符是正则匹配的\r\n匹配字符串:\r\n" + m.String())

                    }
                  } else {
                    RstTE.SetText("字符串:\r\n" + regex_str + " 和字符串:\r\n" + check_str + " \n正则不匹配")

                  }

                },
              },
              TextEdit{AssignTo: &HlpTE, ReadOnly: true,
                Text:    HlpText,
                HScroll: true,
                VScroll: true,
              },
            },
          },
        },
      },
    },
  }.Run()
}


如果在有疑问或需要沟通的地方,可以QQ:1354608370 或 加FreeSWITCH+Kamailio+Opensips QQ群: 293697898 沟通交流!