x-cmd pkg | grex – 正则表达式生成利器,解决手动编写的烦恼

grex 是一个旨在简化创作正则表达式的复杂且繁琐任务的库和命令行程序。这个项目最初是 Devon Govett 编写的 JavaScript 工具 regexgen 的 Rust 移植。但 regexgen 在几年前停止了开发。现在 grex 提供了 regexgen 提供的所有功能,还增加了许多新的功能。

本文的 demo 展现了使用 grex 生成 [a-f] 正则表达式,以及使用可读性更好的方式打印输出。

生成的表达式与 Perl 兼容,也与 Rust 的 regex crate 中的正则表达式解析器(1.9.0 或更高版本)兼容。其他正则表达式解析器或其他编程语言的相应库尚未经过测试

支持 Unicode 符号

  1. 完全符合 Unicode 标准15.0
  2. 能正确处理由多个 Unicode 符号组成的图形元素

友好的用户体验

  1. 自动生成正则表达式:只需提供输入,grex 默认生成最具体的正则表达式,并与给定的输入完全匹配。
  2. 使用详细模式生成在多个上缩进的更具可读性的表达式
  3. 语法高亮显示,在支持的终端中提供更好的显示输出。
  • 项目托管在 GitHub:
  • 您还可以通过 Demo website,将您提供的测试用例中生成匹配的正则表达式。

更多内容请查阅 : grex | x-cmd pkg | 命令行工具和 Rust 库,用于从用户提供的测试用例生成正则表达式

转载请标明原文链接 :https://www.x-cmd.com/pkg/grex

正则表达式(Regex)在线调试工具-Regex101

在字符串查找处理程序中,正则表达式是一个不可忽略的处理方式。

我们能够利用正则表达式轻松地做到检索、替换那些符合某个模(规则)的字符串。

正则表达式有着很强的灵活性、逻辑性及功能性, 可以迅速地用极简单的方式达到字符串的复杂控制。

但对于初学者来说,比较晦涩难懂;再者,正则表达式在实际开发过程中使用不会很频繁。这样的情况下,每次遇到编写正则表达式处理问题时,就需要花费很多时间去调试验证我们的正则匹配模式。

今天,我们来分享一个正则表达式在线调试工具-regex101 。

regex101 是一个在线生成,测试及调试正则表达式的工具。

regex101 支持测试多种语言(PCRE,Python2.7, ECMAScript(JavaScript),Java,Go等)的正则表达式解析,提供高亮匹配公式、正则解析步骤分析、匹配详情等功能。

正则匹配测试

表达式编辑器中能够提示对应正则表达式含义,提示测试字符串匹配到的正则表达式,并且可以选择匹配模式修饰符。

多语言引擎支持

支持PCRE2,PCRE,ECMAScript(Javascript),Python2.7,Golang,Java8的正则表达式引擎解析。

正则表达式解析流程展示

字符串匹配详情

快速语法参考

代码生成工具

分享表达式链接

以上就是对regex101功能的基本使用说明, 通过以上对regex101的介绍,我们就可以使用regex101来调试我们的正则表达式了。

希望能给大家在学习工作中提供少许帮助,为大家在日常项目中提高使用正则表达式的效率。

参考:

https://regex101.com/

jmeter(十五)-正则表达式提取器

sampler请求的服务器响应结果中通过正则表达式提取值所需值,生成模板字符串,并将结果存储到给定的变量名中。

界面如下:

正则表达式提取器界面

  • Apply to:作用范围(返回内容的断言范围)

1)Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器

2)Main sample only:仅作用于主节点的取样器

3)Sub-samples only:仅作用于子节点的取样器

4)JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值。

  • Field to check:要检查的响应报文的范围

1)主体:响应报文的主体,最常用

2)Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不建议使用

3)Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能

4)Response Headers(信息头):响应信息头(

5)Request Headers:请求信息头

6)URL:请求url

7)Response Code(响应代码):响应状态码,比如200、404等

8)Response Message(响应信息):响应信息

  • 引用名称(Names of created variables):

Jmeter变量的名称,存储提取的结果;即下个请求需要引用方法是${变量名}。

  • 正则表达式(Regular Expression):

使用正则表达式解析响应结果,()括号表示提取字符串中的部分值,前后是提取的边界内容。

常用正则表达式:(.*?)表示匹配任意长度的任意字符,是最常用的正则表达式,基本能满足80%场景要求

  • 模板(Template):

正则表达式的提取模式。如果正则表达式有多个提取结果,则结果是数组形式,模板$1$,$2$等等,表示把解析到的第几个值赋给变量;从1开始匹配,以此类推。

若只有一个结果,则只能是$1$;有多个结果,可以使用$1$2$方式取2个值。

  • 匹配数字(Match No.(0 for Random)):

正则表达式匹配数据的结果可以看作一个数组,表示如何取值:

1)0代表随机取值,默认

2)正数n表示取第n个值,(1:第一个值

3)负数表示提取所有符合条件的值,(-1:所有

  • 缺省值(Default Value):

匹配不到值的时,取该值;

  • 使用空默认值(Use empty default value):

勾选后,提取不到值时,则返回空字符串。

1)主体(body)

2)Response Headers(信息头)

3)Request Headers:请求信息头

4)URL

5)Response Code(响应代码)和Response Message(响应信息)

正则表达式提取器如下:

测试结果:

调试取样器

使用变量,也可以通过变量名_g直接进行提取,如下:

正则表达式提取器

测试结果:

正式表达式:

备注:多个模板( $1$2$ )的时候,可以用空格、, 、. 、 – 连接模板

测试结果:

备注:在调试过程中可结果察看结果树和Debug sample来帮助分析结果。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。