正则表达式学习

正则表达式

一、正则表达式是什么

正则表达式(Regular Expression)是一种文本模式,使用单个字符串来描述、匹配一系列某个句法规则的字符串。正则表达式由普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")组成。
本文只对正则表达式的一些基本使用做说明,在开发过程中掌握基本使用足矣。

二、正则表达式能做什么

简单来说,就是做“模式匹配”。例如匹配符合某种规则的电话号码,匹配一定规则限制的数字等。

三、正则表达式的语法

正则表达式通过将常用的普通字符(大写和小写字母、所有数字、所有标点符号和一些其他符号)与元字符按照一定规则组合,形成多种多样的文本表达式,去匹配文本。

3.1 普通字符

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

3.2 特殊字符

特殊字符|描述
---|:--😐---😐
$|匹配输入字符串的结尾
()|匹配一个子表达式的开始和结束位置
*|匹配前面的子表达式0次或多次
+|匹配前面的子表达式1次或多次
.|匹配除换行符\n之外的所有字符
[|标记一个中括号表达式的开始
?|匹配前面的子表达式0次或1次
||将下一个字符标记为或特殊字符,或原义字符,如\n将n标记为换行符,\将\标记为原义字符
^|匹配输入字符串的开始位置,在[]中使用时表示不接受该方括号Ne表达式的字符集合
{|标记限定符的开始
||指明两项中有一个选择,是“或”的关系
以上字符,若需要匹配其原义字符,在其前面加“\”
“()”,“[]”,“{}”三者的区别:
()是为了提取匹配的字符串,表达式中有几个()就有几个相应的匹配字符串。“\s*”表示连续空格的字符串。
[]定义了匹配的字符范围。比如[a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字(只匹配字符集合的一个)。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如\s{3}表示匹配3个空格,\s{n,m}表示匹配n到m个空格,还可以用{n,}表示匹配至少n次

3.3 定位符

除了^、$外,还有两个定位符
字符|描述
---|:--😐---😐
\b|匹配一个单词边界,即字与空格之间的位置
\B|非单词边界匹配
注意:不要将限定符和定位符一起使用,如^*

3.4 运算符优先级

运算符|描述
---|:--😐---😐
||转义符
(), (?=), []|圆括号和方括号
*, +, ?, {n}, {n,}, {n,m}|限定符
^, $, \任何元字符、任何字符|定位点和序列(即:位置和顺序)
||替换,"或"操作.字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

3.5 一个简单的例子

匹配一串金额数字,要求:整数位不超过15位,小数位不超过3位,金额可正可负
分析:要么为整数(正数或负数),要么为纯小数,要么为大于1的小数。注意,金额首位不能为0,当金额为0时,只能表示为0,0.00,0.000。

^(-?[1-9][0-9]{0,14})|([0]\.\d{1,2})|(-?[1-9][0-9]{0,14})(\.\d{1,2})$

正则表达式学习资源

posted @ 2020-09-05 19:14  CleverZiv  阅读(175)  评论(0编辑  收藏  举报