正则表达式操作实例讲解

作者:创世魂

 

● 帮助说明

本教程针对正则表达式各种操作进行了讲解说明。

本教程所有方法均位于“正则表达式支持”模块中。

 

 

一、正则表达式类

 

● 编译
● 正则分割

“编译”帮助文档:

通过“正则表达式文本”创建表达式对象,失败返回空对象。

注意:只有创建了当前“正则表达式类”对象后,才能对指定文本进行正则操作。

参数1:填写正则表达式文本,务必保证正确,否则会创建失败。

参数2:调用方式“正则匹配标志.XXX”,根据实际需求填写匹配标志即可。

 

“正则分割”帮助文档:

通过“编译()”方法创建的正则对象调用本方法,即可实现正则分割,返回分割后的文本数组。

参数1:动态调用时忽略本参数。

参数2:填写要分割的文本。

参数3:填写0表示匹配全部,否则代表匹配次数。

 

代码编写如下图:

1、定义类型为“正则表达式类”变量,勾选参考。调用“编译()”方法赋值给此变量。

2、参数中填写“[\u4e00-\u9fa5]+”表示匹配中文。

3、 通过“正则对象”调用“正则分割()”方法,分割带有中文的字符串,赋值给定义的文本数组变量。

4、 最后通过“数组到文本()”方法,将其转换成文本显示在编辑框中。

 

运行结果如下图:

 

● 是否完全匹配

 

帮助文档如下图:

通过本方法可判断“正则表达式”是否能完全匹配“输入的文本”

完全匹配返回真,否则返回假。

参数1:填写正则表达式文本。

参数2:填写要匹配的文本。

 

代码编写如下图:

1、调用“是否完全匹配()”方法赋值给定义的逻辑变量。

2、通过判断逻辑变量反馈对应结果。

 

运行结果如下图:

例程中的参数1的“正则表达式”的意思是匹配中文字符。

而参数2输入的字符中带有除中文外的其它字符,因此此处编辑框内容显示“有多余内容”

 

● 表达式文本(读)

 

帮助文档如下图:

通过本读属性可读取“编译()”方法中输入的表达式文本。

 

代码编写如下图:

1、调用“编译()”方法,随便编译一个正则表达式。

2、调用“表达式文本”读属性,将编译的表达式文本取出,显示在编辑框中。

 

运行结果如下图:

 

● 创建匹配器
● 全部替换

 

“创建匹配器”帮助文档:

通过本方法可创建正则表达式的匹配器对象,用于对指定文本进行匹配,返回正则匹配器对象。

参数1:提供正则表达式对象,动态调用时省略。

参数2:提供要匹配的文本。

注意:本方法必须调用“编译()”方法返回“正则表达式类”对象后才能调用本方法。

 

“全部替换”帮助文档:

本方法通过“创建匹配器()”方法返回匹配器对象后才能调用本方法。

作用是用来对匹配文本进行替换。

例如:匹配一串文本中所有的中文字符,调用本方法替换成“1”,最后所有的中文都将替换成“1”

 

代码编写如下图:

1、调用“编译()”方法,编译一个正则表达式对象。

2、通过编译好的正则表达式对象,调用“创建匹配器()”方法,创建一个匹配器对象。

3、最后通过“匹配对象”调用“全部替换()”方法,赋值给编辑框1的内容。

 

运行效果如下图:

指定文本字符串的所有中文字符都将替换成指定文本。

 

 

二、正则匹配器类

 

● 从区域首查找
● 取匹配文本段

 

“从区域首查找”帮助文档:

顾名思义,如果未指定限定区域,则从指定文本的首部开始查找。

找到返回真,未找到返回假。

 

“取匹配文本段”帮助文档:

通过本方法可取出找到的文本。

 

代码编写如下图:

1、通过“编译()”方法创建正则表达式对象。

2、调用“创建匹配器()”方法创建指定文本的匹配对象。

3、判断“从区域首查找()”方法的返回值是否等于真,如果等于则调用“取匹配文本段()”取出匹配文本。

 

运行结果如下图:

 

● 从指定位置查找

 

帮助文档如下图:

顾名思义,从指定文本开始匹配。

返回真表示找到匹配文本,返回假表示没有找到。

 

代码编写如下图:

“从区域首查找()”方法代码基础上修改成本方法,并填写一个索引参数即可。

 

运行结果如下图:

索引3的位置为字母“b”,因此返回“软”字。

 

● 取匹配文本段起始位置
● 取匹配文本段结束位置

 

帮助文档如下图:

通过以上两个方法可以取出匹配文本的起始和结束位置。

注意:未处于匹配状态将会返回-1。

 

代码编写如下图:

1、调用“编译()”方法创建正则表达式对象。

2、调用“创建匹配器()”方法创建匹配器对象。

3、调用“从指定位置查找()”方法,开始匹配文本。

4、将找到的“起始和结束”位置显示在“编辑框1”中。

 

运行结果如下图:

索引值从0开始,因此匹配到第一个中文字符后,起始位置为“1”结束位置为“2”

 

● 取子匹配组

 

帮助文档如下图:

当匹配文本成组出现时,通过本方法可取出组中的子文本。

索引值0:取出要匹配的文本。

索引值1:取出第一个子文本,剩下的以此类推。

注意:索引值必须“大于0”小于“子匹配组数”属性值。

 

代码编写如下图:

1、调用“编译()”方法创建正则表达式对象(注:“(.*?)”为通配符,匹配任意字符)。

2、调用“创建匹配器()”方法创建匹配器对象。

3、调用“从区域首查找()”方法,开始匹配文本。

4、最后调用“取子匹配组()”方法取出所有索引的子文本。

 

运行结果如下图:

 

● 取子匹配组起始位置
● 取子匹配组结束位置

 

帮助文档如下图:

以上两个方法用于取出匹配组文本的“开始和结束”位置。

 

代码编写如下图:

在上一个方法的基础上增加以上两个方法即可。

 

运行结果如下图:

 

● 子匹配组数(读)

 

帮助文档如下图:

本读属性用于取出匹配组数(即匹配到的子文本数量)。

 

代码编写如下图:

1、编译正则表达式创建正则对象。

2、创建匹配器对象。

3、调用当前读属性取出自匹配组数。

 

运行结果如下图:

 

● 查找下一个
● 已到文本尾

 

“查找下一个”帮助文档:

通过本方法可查找下一个文本匹配段,返回真表示找到了,否则返回假。

 

“已到文本尾”帮助文档:

通过本方法可判断当前匹配是否已经到了文本尾部,返回真表示达到尾部。

 

代码编写如下图:

1、创建表达式对象后创建匹配器对象。

2、调用“从指定位置查找()”方法,取出被匹配的文本。

3、虽然提供的匹配文本只有一个中文字符,但是仍然需要调用“查找下一个()”方法移动匹配位置。

4、最后调用“已到文本尾()”方法,判断是否到文本尾部。

 

运行结果如下图(GIF):

 

● 文本引用替换

 

帮助文档如下图:

本方法可将指定文本进行转义处理,返回处理后的文本。

 

代码编写如下图:

调用本方法对“$10”进行转义处理后显示在编辑框1中。

 

运行结果如下图:

 

● 替换首匹配文本

 

帮助文档如下图:

通过本方法可对匹配到的首个文本进行替换,替换成参数中的指定文本。

返回替换后的结果文本。

 

代码编写如下图:

1、创建正则表达式对象。

2、通过创建的正则对象,创建匹配器对象。

3、判断“从区域首查找()”方法的返回值是否等于真,然后调用“替换首匹配文本()”方法,进行文本替换。

 

运行结果如下图:

最后会将原文本中的“火”替换成“1”

 

● 添加尾文本

 

帮助文档如下图:

本方法的作用就是将“创建匹配器()”方法中的“输入文本”添加到指定文本缓冲区的尾部。

添加后返回一个新的文本缓冲区对象。

 

代码编写如下图:

1、通过一个表达式文本创建正则对象。

2、通过正则对象创建匹配器。

3、定义类型为“安全文本缓冲区”的变量勾选参考,调用“创建安全文本缓冲区()”方法赋值给定义的变量。

4、再次定义一个类型为“安全文本缓冲区”的变量,勾选参考。

5、将“缓冲区”变量填写到“添加尾文本()”的参数中,并赋值给“缓冲区2”变量。

6、最后通过“缓冲区2”调用“取子文本2()”方法取出缓冲区中的文本,赋值给编辑框。

 

运行结果如下图:

 

● 添加替换文本

 

帮助文档如下图:

简单来说就是匹配到文本后,对匹配文本进行替换,并添加到文本缓冲对象中。

注意:当前匹配文本后面的文本不会添加到缓冲对象中。

例如:“123火abc”进行正则匹配中文,匹配到“火”替换成“山”,并添加到文本缓冲区中。

最终从文本缓冲区中取文本只会取出“123山”“abc”并不会添加到文本缓冲区中。

 

代码编写如下图:

按照上述例如编写例程进行实践操作,针对“123火abc”进行匹配中文操作。

1、定义“正则匹配器类”变量,调用“编译().创建匹配器()”方法赋值给此变量,参数填写上述例如中的数据。

2、定义“安全文本缓冲区”变量,将此变量加入“添加替换文本()”方法的参数中,并且指定替换文本。

3、调用“文本缓冲.取子文本2()”方法取出缓冲区中的文本赋值给编辑框1的内容。

 

运行结果如下图:

 

如何实现将尾文本一起返回?

其实很简单,只需要利用“添加尾文本()”方法即可实现。

如下图所示:

 

运行结果如下图:

 

● 置表达式

 

帮助文档如下图:

顾名思义,通过本方法可重置正则表达式。

例如:表达式对象原为匹配中文字符,通过此方法可修改成匹配英文字母或者其它内容。

 

代码编写如下图:

1、编译表达式创建匹配器对象,匹配“输入文本”中的“中文字符”

2、调用“置表达式()”方法重置表达式,匹配英文字母。

3、查找下一个后,调用“取匹配文本段()”方法取出匹配文本。

 

运行结果如下图:

 

● 重置

 

帮助文档如下图:

顾名思义,通过本方法会重置当前匹配状态。

下次调用“查找下一个()”时,会从头开始匹配。

 

代码编写如下图:

1、创建表达式匹配中文。

2、匹配两次后调用“重置()”方法,再次匹配会从头开始。

 

运行结果如下图:

 

● 重置2

 

帮助文档如下图:

本方法和“重置()”不同之处在于,本方法可以重置“输入文本”

 

代码编写如下图:

“重置()”方法修改为“重置2()”并填写参数即可。

 

运行结果如下图:

 

● 重置限定区域
● 限定区域起始/结束位置

 

“重置限定区域”帮助文档:

通过本方法可以限定匹配区域。

参数2、3分别填写起始和结束位置,索引从0开始。

 

“限定区域起始/结束位置(读)”帮助文档:

以上两个读属性,可以读取限定区域起始和结束位置。

 

代码编写如下图:

1、创建正则表达式匹配中文。

2、调用“重置限定区域()”方法,限定匹配区域。

3、查找下一个取出匹配文本和限定区域的起始/结束位置。

 

运行结果如下图: