正则表达式入门小结

Posted cheerjude

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式入门小结相关的知识,希望对你有一定的参考价值。

正则表达式语言由俩种基本字符组成:元字符和普通字符。
元字符,即特殊符号,并不代表本身的字符意义,根据其在正则表达式语言中代表的特殊含义来匹配目标字符。
普通字符,即代表本身的字符意义,如1-9,a-z等。

1、基础且常用的特殊字符小结

                    代表匹配次数的元字符

{n} 重复n次
{n,m} 重复n到m次
a? 字符 a <=1次,相当于a{0,1}
a+ 字符a >=1次,相当于a{1,}
a* 字符a >=0次,相当于a{0,}
( ) 匹配目标值的分组,每个组自动有组号,从左到右组号为1,2,3...
a{4}
a{1,5}
匹配字符a 长度为4次
匹配字符a 长度1~5次
a.*b 贪婪模式,匹配a和b之间的所有字符
a.*?b 懒惰模式,尽量少的匹配a和b之间的字符,最少为ab
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n, }? 重复n次以上,但尽可能少重复

                    代表匹配具体字符

. 匹配除换行符以外的任意字符
w 任意一个字母、数字或下划线,即A~Z,a~z,0~9,_
W 任意一个非字母或数字或下划线的字符
s 任意一个空格、制表符、换页符等空白字符
S 任意一个非空白符的字符
d 0~9任意一个数字
D 任意一个非数字
 代表字符在单词的开始或结束位置,
如F,c  代表以F开头的单词或c结尾的单词
B 代表字符在非单词开始或结束位置,
如Bz. 匹配"add czppp",结果是zp
[a-k0-9] a~k之间任意一个字符 或 0~9之间任意一个数字,[]代表范围内的字符
[^fuk] 匹配f、u或k之外的任意一个字符,[^ ] 代表除..之外的字符
^a 匹配的字符a在最开头位置
a$ 匹配的字符a在末尾位置

                转义字符

代表回车符
代表换行符
代表制表符

2、元字符规律小结

  • 与小写字母组合代表所包含意义匹配字符,大写字母即变成取反,如d、D 或 w、W。
  • 元字符与?组合,均是尽可能少的匹配,如+? 或 *? 或 ?? 或 {5,}? 。
  • 要元字符代表普通字符,需要再元字符前加。如^ 或 $ 或 * 等。

3、参考例子及练习

  • 贪婪模式&懒惰模式参考
当有字符串:aabab
① a.*b 匹配到的是:aabab(贪婪模式)
② a.*?b 匹配到的是:aab及ab(懒惰模式)
③ a.+?b匹配到的是:aab
  • 在“where are you"中匹配单词are
are
  • 输入的字符在a-g之间并且最大长度为3最小长度为1
[a-g]{1,3}
  • 匹配3位区号-8位电话号码,如010-12345678
^d{3}-d{8}$
  • 验证最小长度为3最大长度为7的数字
d{3,7}
  • 验证如INV190203 或 inv820830,前3位不区分大小写的英文字母,剩余8位是数字
[a-zA-Z]{3}d{8}
  • 匹配常用URL规则(以www开头,域名是字母数字,长度1-15,以.com或者.org结束)
^www[.][a-zA-Zd]{1,15}[.](com|org)$
  • 匹配常用email规则(字母数字下划线,长度3-15)@(字母数字,长度2~4).(字母,长度2~4)
^w{3,15}@[a-zA-Zd]{2,4}.[a-zA-Z]{2,4}$
  • 验证值在0-25的数字
(([0-9])|([0-1][0-9])|([0-2][0-5]))$
  • 验证格式为 YYYY/MM/DD 或 YYYY-MM-DD 或 YYYY.MM.DD 的日期
① 年YYYY允许用户输入年份1900-2099.:(19dd|20dd)
②月MM允许输入01~12或者1~12:(d|0d|1[0-2])
③日DD允许输入01~31或者1~31:(d|0d|1d|2d|3[0-1])
④连接符:[-/.]
结果如下:
^(19dd|20dd)[-/.](d|0d|1[0-2])[-/.](d|0d|1d|2d|3[0-1])$

 

 




以上是关于正则表达式入门小结的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式小结

正则表达式小结

俗话:学好正则表达式,走遍天下都没事!最详细的正则入门教程!

正则表达式小结

Linux之正则表达式的应用

通过 Java 正则表达式提取 semver 版本字符串的片段