正则表达式

[abc] 一个中括号指标一个字符位置,匹配a或者b或者c
[0-9]根据ascii码进行范围的对比,只表示一个位置,0-9任一个数都会被匹配上
[a-z] a-z 26个小写字母中任意一个都会匹配上,只能匹配一个位置
[A-Z]A-Z 26个大写字母中任意一个都会被匹配上,只能匹配一个位置
[a-zA-Z] 匹配大小写字母
[0-9a-z]0-9的数字和a-z小写字母
[0-9A-Z]
[0-9a-zA-Z_]
在正则表达式中能够帮助我们表示匹配的内容的符号都是正则中的 元字符
[0-9]-------> \d 表示匹配一位任意数字 digit
[0-9a-zA-Z_]------> \w 表示匹配一位数字字母下划线 word
空格----->
tab-------> \t
enter------> \n
空白,tab,enter------>\s 表示所有空白 包括空格 tab 和回车

元字符 ---- 匹配内容的规则
[] [^]
\d 一位数字
\w 一位数字字母下划线
\s 空格 tab enter
\t tab
\n enter
\D 一位非数字
\W 一位非数字字母下划线
\S 非空白
[\d] \d
[\d\D] [\w\W] [\s\S] 表示匹配所有
. 匹配除了换行符之外 的所有
[^\d] 匹配所有的非数字
[^1] 匹配所有的非数字
^ 匹配一个字符串的开始
$ 匹配一个字符串的结束
a表达式|b表达式 匹配a 或者b表达的内容,如果匹配a成功了,不会继续和b匹配
所以,如果两个规则有重叠部分,总是把长的放在前面

() 约束 | 描述的内容的范围问题

www\.oldboy\.com|www\.baidu\.com|www\.qq\.com|www\.jd\.com|www\.taobao\/com
www\.(oldboy|baidu|jd|taobao)\.com

量词
{n} 表示匹配n次
{n,} 表示匹配至少n次
{n,m} 表示至少n次,至多m次
+ 一次或多次 {1,}
? 0次或一次 {0,1}
* 0次或多次 {0,}

整数 \d+ \d 只代表一位, + 表示任何多次数
小数 \d+\.\d+
整数或者小数 \d+(\.\d+)? == \d+\.?\d*

手机号码 1[3-9]\d{9}
判断用户输入的手机号是否正确,输入的正确就能查到结果,输入错误就不能查到结果
^1[3-9]\d{9}$ 这里限定了字符长度 格式
从一个大文件中找到所有符合规则的电话号码
1[3-9]\d{9}

18/15位的身份证号
15------> [1-9]\d{14}
18------>[1-3]\d{16}[\dx]

贪婪匹配:在量词范围允许的情况下,尽量多的匹配内容
.*x 表示匹配任意字符,任意多次数,遇到最后一个才停下来
非贪婪匹配
.*?x 表示匹配任意字符,任意多次数,但是一旦遇到x就停下来

转义符
原本有特殊意义的字符,当需要表达它本身字面意义的时候就需要转义
有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义
[().*+?] 所有的内容在字符组中会取消它的特殊意义
[a\-c]-在字符组中表示范围,如果不希望它表示范围,需要转义,或者凡在字符的最前面\最后面
取消特殊意义\. 在特殊字符前加 \ 或者放在 []中
posted @ 2020-04-13 20:13  muchen  阅读(342)  评论(0编辑  收藏  举报