每次要用到正则表达式的时候发现自己之前学的都忘了,也没有好好整理过,这次就把遇到的关于正则表达式的问题好好整理一下。
首先关于正则表达式的元字符,最常用的也只是几个,把这几个记住了,剩下不常用的百度一下就可以找到。
- ^匹配输入字符串的开始位置
- $匹配输入字符串的结束位置
这两个元字符一般都在需要强制限定开始和结束的字符时才使用。 - *匹配前面的子表达式零次或多次。比如a* 就表示除去开始的a之外,后面匹配a零次或多次
- +匹配前面的子表达式一次或多次
- ?匹配前面的子表达式零次或一次
- [0-9]表示0到9的任意一个数字
- {n} n 是一个非负整数。表示匹配n 次
- \b匹配一个单词边界,也就是指单词和空格间的位置
- \d匹配一个数字字符。等价于 [0-9]。
- ‘.’点表示匹配除换行符(\n、\r)之外的任何单个字符,通常用.*来匹配除换行符之外的任意字符
- \s 匹配任何空白字符,包括空格、制表符、换页符等等
- \w 匹配字母、数字、下划线。等价于[a-zA-Z0-9_]
- ( ) 标记一个子表达式的开始和结束位置 如/\b([a-z]+) \1\b/ig 中([a-z]+)是一个子表达式,\1是对第一个子表达式的引用。i标记指定不区分大小写,g表示全局匹配。
现在我想要匹配一下a标签包括a标签里的所有内容,正则表达式为:<a.*>.+?</[a]> 表达式中 ‘.*‘表示除了换行符的所有任意个字符,’.+’ 表示匹配1个或多个任意字符。’.+?’ 中的 '?'将表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配,意思是后面当碰到第一个<就停止。
再举个例子<div class="time">11月15日 15:23</div>
我们想要取代码中的时间,我们可以用正则表达式:\d{2}:\d{2},可以到在线正则表达式测试中测试。
我们可以记住:通过在 、+ 或 ? 限定符之后放置 ?,可以将表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。