这节课我们来学习一下正则表达式中的分行匹配——尖号与美元符号的使用。
很多同学可能已经注意到了在我们正则表达式的匹配工具中有这么几个小框框,可以进行勾选或者不勾选。之前的课程我们一直没有详细的提及它们,相信有的同学已经想要知道它们是用来做什么的了。在这里我们来详细讲解一下这几个选择框分别的定义和使用:
全局匹配:勾选视为匹配返回所有匹配到的结果,不勾选视为只返回找到的第一个结果。默认勾选。
区分大小写:勾选视为匹配时进行大小写的区分,不勾选则不管大小写(所见即所查的时候)。默认不勾选。
多行模式:不勾选视为将整个源文本视为一个整体来匹配,勾选视为一行一行的看是否匹配。配合尖号和美元符号使用。默认不勾选。
^
与$
这两个符号用来定义源文本中一行的开头和结尾,本身不匹配任何字符,行的划分以换行符或者回车符作为分隔。可以单独使用,只定义开头或者只定义结尾。
我们来用一点例子做一下说明:
比如我们有这个源文本:
1 第一课 2 第二课 3 第三课
可以看到这个源文本是有规律的,每一行内容不同但是具有一定的模式,都是先写一个数字,然后几个空格,然后再是第几课。像这种分行有规律的源文本我们就可以考虑使用多行模式进行匹配了。如图,我们可以把每一行都匹配出来(请务必记得一定要勾选多行模式):当然现实中的源文本比这个要复杂的多,这里仅仅演示一下尖号与美元符号的使用。更复杂的情况等我们讲到实战的例子的时候再跟大家讲解。
同时,尖号和美元符号也可以单独进行使用,单独定义开头或者结尾,比如我们有这个源文本:
1231243211746 24325341739812 1231236721313 1231242351412311
这也是多行的文本,每一行是一串没有规律的数字。我们来完成以下几个任务:
1. 要求匹配出位数刚好在13位的行:
这种情况必须定义开头和结尾,如果我们不定义尖号和美元符号,写\d{13}
,那么匹配结果是这样的:
它会错误的将每一行截取13位来进行匹配,所以我们应该在正则表达式头尾加上尖号和美元符号:^\d{13}$
这样就匹配到只有13位的两行了。
2. 要求匹配以12
开头的行:
以什么为开头,就用尖号来定义开头就可以了,结尾不用管所以我们不需要使用美元符号。
3. 要求匹配以1
结尾的行:
只使用美元符号即可:
以上就是关于尖号与美元符号的多行匹配的使用。
当我们的源文本是按一行一行有规律的内容时,可以考虑使用多行模式进行匹配,活用尖号与美元符号。有的时候它们的使用不是特别的常见,多数时候我们都不勾选多行模式进行匹配。但是在需要的时候,它们就很好用了。
额外特别补充:
基于之前学过的字符集定义的内容,这里补充一下,尖号^
如果把它放在中括号中是有不一样的含义的,尖号放在中括号里内容的开头表示“非
”的意思,也就是不是后面写的字符集定义以外的任何内容的意思。比如我们有一个源文本abcdefg123
,如果我们写一个正则表达式:[^0-9abc]
,那么就会把除了所有数字以及字母abc以外的内容匹配出来。在教学视频中我们测试了一下,尖号必须得写在中括号里面的开头才有效果,如果写在中间不起效果。
以下是我们的视频教程:
在线观看:
高清源文件下载:
内容已经隐藏,请注册为本站会员后查看
感谢大家的收看,我们下期再见!
评论