zl程序教程

您现在的位置是:首页 >  Java

当前栏目

7分钟快速入门史上最强正则表达式教程

2023-02-18 16:23:34 时间

今天有点标题党。下面是我整理的以前培训的录音,应对FreeSWITCH中的正则表达式,对于初学者基本上就够了。如果你在学FreeSWITCH Dialplan和正则表达式,可以看一看。

FreeSWITCH中使用PCRE(Perl Compatible Regular Express),大多数其它软件中的正则表达式也兼容这个版本,因而,这里讲的正则表达式也不限于在FreeSWITCH中使用。毕竟,对处理字符串来说,正则表达式是一个基本功能。

正则表达式使用模式匹配(Pattern Match),匹配到的内容可以被捕获(Capture),放到变量中,在后续使用时可以引用。根据场景不同,引用的方式有 1、2,或%1、%2,以及\1、\2等。在FreeSWITCH中使用1、2这种形式。

下面是常见的一些正则表达式。

^1234$
^ 匹配字符串开头,$ 匹配结尾,所以本表达式严格匹配 1234

^1234|5678$
| 是或的意思,表示匹配 1234 或 5678

^123[0-9]$
[ ] 表式匹配其中的任意一个字符,其中的 - 是省略的方式,表示 0 到 9,它等于 [0123456789],
也就是说它会匹配 1230,1231,1232 ... 1239

^123\d$
同上,\d 等于 [0-9]

^123\d+$
+ 号表示1个或多个它前面的字符,因为 + 前面是 \d,
所以它就等于1个或多个数字,实际上,它匹配任何以123
开头的至少4位数的数字串,如1230,12300,12311,
123456789等
^123\d*$
*号与+号的不同在于,它匹配0个或多个前面的字符。所以,
它匹配以123开头的至少3位数的数字串,如 123,123789

^123
跟上面一样,由于没有结尾的$,它匹配任何以123开头的
数字串,但除此之外,它还匹配后面是字母的情况,如123abc

123$
匹配任何以123结尾的字符串

^123\d{5}$
{5}表示精确匹配5位,包含它前面的一个字符。在这里,
它匹配以123开头的所有8位的电话号码

^123(\d+)$
( )在匹配中不起作用,跟^123\d+是相同的,但它
对匹配结果有作用,匹配结果中除123之外的数字都
将存储在$1这个变量中,在后面可以引用^123(\d)(\d+)$
如果用它跟12345678匹配,则匹配成功,结果是 $1 = 4,$2 = 5678

.
最后说明,“.” 匹配任意一个字符,如果你写了 .* ,
则它会匹配任意字符串