《易语言“正则表达式”教程》.docx
《《易语言“正则表达式”教程》.docx》由会员分享,可在线阅读,更多相关《《易语言“正则表达式”教程》.docx(43页珍藏版)》请在三一办公上搜索。
1、易语言“正则表达式”教程本文改编自多个文档,因此如有雷同,不是巧合。“正则表达式”的应用范围越来越广,有了这个强大的工具,我们可以做很 多事情,如搜索一句话中某个特定的数据,屏蔽掉一些非法贴子的发言,网页中 匹配特定数据,代码编辑框中字符的高亮等等,这都可以用正则表达式来完成。本书分为四个部分。第一部分介绍了易语言的正则表达式支持库,在这里,大家可以了解第一个 正则表达式的易语言程序写法,以及一个通用的小工具的制作。第二部分介绍了正则表达式的基本语法,大家可以用上述的小工具进行试验。第三部分介绍了用易语言写的正则表达式工具的使用方法。这些工具是由易 语言用户提供的,有的工具还带有易语言源码。他
2、们是:monkeycz、零点飞越、 寻梦。第四部分介绍了正则表达式的高级技巧。目录易语言“正则表达式”教程1目录1第一章易语言正则表达式入门3一. 与DOS下的通配符类似3二. 初步了解正则表达式的规定3三. 一个速查列表4四. 正则表达式支持库的命令54.1第1个正则表达式程序54.2第2个正则表达式例程74.3第3个例程84.4 一个小型的正则工具9第二章揭开正则表达式的神秘面纱11引言12一. 正则表达式规则0121.1普通字符121.2简单的转义字符131.3能够与“多种字符”匹配的表达式141.4自定义能够匹配“多种字符”的表达式161.5修饰匹配次数的特殊符号171.6其他一些代表
3、抽象意义的特殊符号20二. 正则表达式中的一些高级规则212.1匹配次数中的贪婪与非贪婪212.2反向引用1, 2232.3预搜索,不匹配;反向预搜索,不匹配24三. 其他通用规则25四. 其他提示27第三章正则表达式工具与实例28一. 正则表达式支持库291.1 “正则表达式”数据类型291.2 “搜索结果”数据类型30二. 正则表达式实用工具302.1 一个成品工具302.2易语言写的工具33三. 应用实例343.1 实例1343.2 实例2363.3 实例3373.4 实例437第四章正则表达式话题38引言38一. 表达式的递归匹配381. 1匹配未知层次的嵌套381.2匹配有限层次的嵌
4、套39二. 非贪婪匹配的效率402.1效率陷阱的产生402.2效率陷阱的避免41附录:42一.17种常用正则表达式42第一章易语言正则表达式入门一. 与DOS下的通配符类似其实,所谓的“正则表达式”,是大家一直在使用的,记得吗?在搜索文件时, 会使用一种威力巨大的武器DOS通配符一一“?”和“*”。这就是最常用的正 则表达式。例如:123.* 表示所有文件名为123的文件,如123.txt, 123.doc, 123.wps, 123.swf, 123.xls 等。“中国?.doc”表示所有文件名类似于中国1.doc、中国2.doc、中国x.doc 这样的文件。上述DOS下的通配符用“?”号代
5、表一个字符,*”号代表任意个字符,但在 正则表达式中,可能这些都有些改变。如*”号匹配的就不一样。下面看看正则 表达式是如何规定的吧。二. 初步了解正则表达式的规定正则表达式正是在“DOS通配符”基础上复杂化而得到的。其最常用的表达 式可能是:*匹配0或多个正好在它之前的那个字符。例如a*意味着能够匹配任意数量的a字符.匹配任何单个字符。例如r.t匹配这些字符串:rat、rut、r t,但是不 匹配root(等同于DOS通配符下的?号。)”匹配一行的开始。例如When能够匹配字符串When in the course of human events的开始,但是不能匹配What and When
6、 in the”。$匹配行结束符。例如正则表达式weasel$能够匹配字符串Hes a weasel” 的末尾,但是不能匹配字符串They are a bunch of weasels.”。在这些字符中,可以使用.来表示.,*表示*,不过,这种情况出现 得很少,如果不能理解,可以暂时不理它,到用的时候就明白了。正则表达式还有一个强大的符号:,这个所括的内容,可以不按顺 序进行匹配。如abc 匹配 abc, acb, bac, bca, cab, cba 这 6 个文本0-9匹配任意0到9的数字a-z匹配所有小写字母A-Z匹配所有大写字母当然,你可以把它们混在一起写成a-z0-9 这种样子。很多
7、时候,我们需要检查文本中的非数字,我们就可以使用“这个符号,表示“除了”0-9匹配所有非数字文本a-zA-Z匹配所有非字母的文本FONT匹配所有不含FONT的文本三.一个速查列表卜面用一个表来表示:*前面元素出现0次以上.匹配任何单个字符?前面元素出现0次或1次+前面元素出现1次以上八表示开头。$表示结尾。.*表示0个以上的任意字符。范围描述符。a-z表示从a到z之间的任意一个。w英文字母和数字。即0-9 A-Z a-z。W非英文字母和数字s空字符,即tnrf。S非空字符。d数字,即0-9。D非数字。b词边界字符(在范围描述符外部时)B非词边界字符b退格符(0x08)(在范围描述符内部时)m,
8、n前面元素最少出现m次,最多出现n次1选择()群组其他字符该字符本身.正则表达式支持库的命令基本的规则这些也就够了。下面将讲一讲易语言中正则表达式的数据类型和 几个相关命令,相关的数据类型有两个:正则表达式和搜索结果。如下图所示:创是取取匹搜替搜多建否文子配索换索行为本表全模部式4.1第1个正则表达式程序新建一个易语言程序,界面设计如下图所示:按钮被单击事件代码如下:.局部变量正则表达式1,正则表达式正则表达式1.创建(“A.C”,假)编辑框2.内容=至【J文本(正则表达式1.匹配(编辑框1.内容) 如下图所示:在这里,“正则表达式1”是一个正则对象,使用“创建”方法建议了一个“A.C” 正则
9、表达式,然后与编辑框1中的内容进行正则比较,最后得出结论。运行后,大家只要输入三个字符,前为A后为C都会返回真。如下图所示:但如果是小写或多于三个字符,那么返回就会是假。如下图所示:大家也许会问,这样匹配有意义吗?我只能说,有没有意义只在于你怎么用 了,如:可用于程序加密时,不采用判断语句,也不采用循环语句,而是用正则 去匹配是否注册成功,以及可以进行程序名称的检查,程序中一些文字的检查等, 这可能让一些不会正则的破解者很难下手。4.2第2个正则表达式例程通过第一个正则程序,大家会了解正则匹配的重要性,也了解了易语言正则 支持库的基本使用方法,下面这个例程可以让大家了解正则会返回一些更多的内
10、容,大家如何去取回这些信息呢。下面改动上述程序中的一些代码为以下:.局部变量正则表达式1,正则表达式.局部变量搜索结果1,搜索结果,0正则表达式1.创建(“A.C”,假)搜索结果1 =正则表达式1.搜索全部(编辑框1.内容)编辑框2.内容=搜索结果1 1.取匹配文本(编辑框1.内容,)改动后如下所示:变星名类型静态数组备注正则表达式1正则表达式搜索姑果1搜索结果0正则表达式1.创建的搜索结果1二正则表达式1 .搜索全部帽辑框1.内容)编辑椎内容=搜索姑果1 1.取匹配文本 编辑椎1.内容,)在这里,增加了一个搜索结果的对象,用这个对象接收正则表达式匹配的结 果,然后从中提取出大家想要的数据。上
11、述易语言代码的运行结果如下图所示:改动上面编辑框的内容后,结果如下:123adcbe adc按钮这次是较为重要的一环,即我们知道了取回的内容。即由A和C包含的内容。 以及下面会论述到的位置信息。取回的包含的内容意义重大,如:可以取回一对 括号内的内容,这也是为了查找的方便。4.3第3个例程这次的工作任务是取一批文字中的所有字母与数字内容。按钮被单击事件代码如下:.局部变量正则表达式1,正则表达式.局部变量搜索结果1,搜索结果,0.局部变量 数组索引,整数型正则表达式1.创建(a-z0-9” + #换行符+ ”,假)中间的内容,就是要搜索的内容,可以是任意字符,包括换行、空格、 特殊符号.但注意
12、如果有字符”,就表示除了,如*阮表示除了 abc”,现 在,我们给出的表达式意思是匹配含字母、数字、换行符的文本,后面那个假 意思是不区分大小写,你写成真也没有问题。搜索结果1 =正则表达式1.搜索全部(编辑框1.内容)搜索结果是个数组,实际上存放的是字符串搜索后的各种参数,例如位置 等,可以用取匹配文本(,)方法将其取出,注意它的第一个参数必须和搜索 全部()的参数一致编辑框2.内容=”.计次循环首(取数组成员数(搜索结果1),数组索引)编辑框2.加入文本(搜索结果1 数组索引.取匹配文本(编辑框1.内 容,).计次循环尾()图片如下所示:变量名类型静态数蛆备注正则表达式1正则表达式搜索姑果
13、1搜索结果0数组索引整数型正则表达式1.创建 UM出-9” +做行符+ 傲)中间的内容,就是要搜索的内容,可以是任意字符,包括换行、空格、特殊符号.但注意 如果有字符就表示“除了L如表示除了abcm在,我们给出的表达式意思是匹 配含字母、数字、换行符的文本,后面那个“暇“意思是不区分大小写,你写成真也没有问题。搜索结果1 =正则表达式1.搜索全部帽辑框1.内容)搜索结果是个数蛆,实际上存放的是字符串搜索后的各种参数,例如位置等,可以用“取匹配 交本(,)“方法将其取出,注意它的第一个参数必须和“搜索全部()“的参数一致编辑椎.内容=计次循环首 版数蛆成员数 艘索结果1),数组索引):编辑框巳加
14、入文本 髅索结果1 数蛆索引.职匹配交本 端辑框1.内容,) L-计次循环尾o运行后,大家可以在上面的编辑框中输入中文与字母数字的混合,点击按钮 后,就可以从中提取出字母与数字了。运行效果如下图所示:4.4 一个小型的正则工具在这里,大家将学会制作一个小型的正则表达式工具,使用这个工具进行下 面章节更加细致的学习。这个例程也可以在本书的随书光盘中找到。程序界面如下所示安排:按钮被单击事件的代码如下:.局部变量 正则表达式1,正则表达式.局部变量搜索结果1,搜索结果,0.局部变量位置1,整数型正则表达式1.创建(组合框1.内容,假).如果真(正则表达式1.是否为空()=真)连续赋值“”,编辑框A
15、.内容,编辑框B.内容,编辑框C.内容,编辑框D.内容, 编辑框2.内容)返回().如果真结束编辑框2.内容=到文本(正则表达式1.匹配(编辑框1.内容)搜索结果1 =正则表达式1.搜索全部(编辑框1.内容).如果真(取数组下标(搜索结果1, ) = 0)连续赋值“”,编辑框A.内容,编辑框B.内容,编辑框C.内容,编辑框D.内容, 编辑框2.内容)返回().如果真结束编辑框A.内容=搜索结果1 1.取匹配文本(编辑框1.内容,位置1)编辑框B.内容=到文本(位置1)编辑框C.内容=到文本(位置1 +取文本长度(编辑框A.内容)编辑框D.内容=到文本(取文本长度(编辑框A.内容)抓图如下:变量
16、名类型静态数组备注正则表达式1正则表达式搜索结果1搜索结果0位置1整数型壬钮1 一被单击子程序名返回值类型公开备注壬钮1 一被单击正则表达式1.创建 雀合框1.内容,傲)如果真GE则表达式1 .是否为空。二真)-:连续赋值(“”,编辑框人.内容,编辑惟B.内容,编辑椎匚内容,编辑框D.内容,编辑惟Z.内容);返回0箱辑框W.内容=到文本GE则表达式1.匹配 函辑框1.内容)搜索结果1 =正则表达式1.搜索全部 编辑椎1.内容)如果真取数组下标灌索结果L ) = 0)-:连续赋值(“”,编辑框人.内容编辑枢B.内容,编辑椎匚内容,编辑框D.内容编辑枢Z.内容);蛆回0篇辑框A.内容二搜索结果1
17、1.职匹配文本编辑框1 .内径位置1)编辑框B.内容=到文本位置1)编辑框匚内容=到文本位置1 +取文本长度 编辑框人.内容)编辑框D.内容二到文本 敝文本长度 编辑框人.内容JJ通过上述代码后,运行效果如下:上述是测试“匹配”方法中注释的内容:正则表达式.创建(“易语言4.0(模块|支持库)?” )信息框(正则表达式.匹配(“易语言4.0支持库”),0,)在第二章中,大家会发现本书大量用到了这个小程序。请置这个程序的启动窗口总在最前。注意:下标从0开始还是从1开始,因当前编程语言的不同而可能不同。第二章揭开正则表达式的神秘面纱原创文章,转载请保留或注明出处:弓I 言正则表达式(regular
18、 expression)描述了一种字符串匹配的模式,可以用 来:(1 )检查一个串中是否含有符合某个规则的子串,并且可以得到这个子串; (2)根据匹配规则对字符串进行灵活的替换操作。正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易 理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有 做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一 方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能 并不是大家首先要理解的。一.正则表达式规则1.1普通字符字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都 是“普通字
19、符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相 同的一个字符。举例1:表达式“c”,在匹配字符串abcde”时,匹配结果是:成功;匹 配到的内容是:“c” ;匹配到的位置是:开始于2,结束于3。(注:下标从0 开始还是从1开始,因当前编程语言的不同而可能不同)举例2:表达式“bcd”,在匹配字符串abcde”时,匹配结果是:成功;匹配到的内容是:“bcd” ;匹配到的位置是:开始于1,结束于4。1.2简单的转义字符一些不便书写的字符,采用在前面加的方法。这些字符其实我们都已经 熟知了。表达式可匹配r, n代表回车和换行符t制表符代表本身还有其他一些在后边章节中有特殊用处的标点符号
20、,在前面加“”后,就 代表该符号本身。比如:人,$都有特殊意义,如果要想匹配字符串中“人”和“$” 字符,则表达式就需要写成“人”和“$”。表达式可匹配人匹配人符号本身$匹配$符号本身.匹配小数点(.)本身这些转义字符的匹配方法与“普通字符,是类似的。也是匹配与之相同的一 个字符。举例1:表达式“$d”,在匹配字符串“abc$de”时,匹配结果是:成功;匹配到的内容是:“$d” ;匹配到的位置是:开始于3,结束于5。1.3能够与“多种字符匹配的表达式正则表达式中的一些表示方法,可以匹配“多种字符”其中的任意一个字符。 比如,表达式“d”可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是
21、一个,不是多个。这就好比玩扑克牌时候,大小王可以代替任意一张牌, 但是只能代替一张牌。表达式可匹配d任意一个数字,09中的任意一个w任意一个字母或数字或下划线,也就是AZ,az,09,_中任意一个s包括空格、制表符、换页符等空白字符的其中任意一个小数点可以匹配除了换行符(n)以外的任意一个字符举例1:表达式“dd”,在匹配“abc123”时,匹配的结果是:成功;匹配到的内容是:“ 12” ;匹配到的位置是:开始于3,结束于5。举例2:表达式“a.d”,在匹配“aaa100”时,匹配的结果是:成功;匹配到的内容是:“aal” ;匹配到的位置是:开始于1,结束于4。1.4自定义能够匹配“多种字符”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 易语言“正则表达式”教程 语言 正则 表达式 教程

链接地址:https://www.31ppt.com/p-4927887.html