jyj00 2020-07-19
什么是正则表达式?
能做什么
正则规则
所有的规则中的字符就可以刚好匹配到字符串中的内容
字符组:描述的是一个位置上能出现的所有可能性
接受范围,可以描述多个范围,连着写就可以了
[abc] 一个中括号只表示一个字符位置
匹配 a或者b或者c
[0-9] 根据ascii进行范围的比对
[a-zA-Z] 大小写
在正则表达式中能够帮助我们表示匹配的内容的符号都是正则中的 元字符
元字符 -- 匹配内容的规则 [] [^] \d \w \s \t \n \W 非数字字母下划线 \D 非数字 \S 非空白 [\d] \d . 匹配除了换行符之外的所有 [^\d] 匹配所有的非数字 ^ 匹配一个字符串的开始 $ 匹配一个字符串的结尾 a表达式|b表达式 匹配a或者b表达式中的内容,如果匹配a成功了,不会继续和b匹配 所以,如果两个规则有重叠部分,总是把长的放在前面 () 约束|描述的内容的范围问题 www\.oldboy\.com|www\.baidu\.com|www\.jd\.com|www\.taobao\.com www\.(oldboy|baidu|jd|taobao)\.com
记忆元字符 : 都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容 # \d \w \s \t \n \D \W \S # [] [^] . # ^ $ # | ()
量词
{n} 表示匹配n次 {n,} 表示至少匹配n次 {n,m} 表示至少匹配n次,至多m次 ? 表示匹配0次或1次 {0,1} + 表示匹配1次或多次 {1,} * 表示匹配0次或多次 {0,} 匹配0次 # 整数 \d+ # 小数 \d+\.\d+ # 整数或小数 : \d+\.?\d* # 分组的作用 : \d+(\.\d+)? # 手机号码 # 1 3-9 11位 # 1[3-9]\d{9} # 判断用户输入的内容是否合法,如果用户输入的对就能查到结果,如果输入的不对就不能查到结果 # ^1[3-9]\d{9}$ # 从一个大文件中找到所有符合规则的内容 # 1[3-9]\d{9} # 贪婪匹配 # 在量词范围允许的情况下,尽量多的匹配内容 .*x 表示匹配任意字符 任意多次数 遇到最后一个x才停下来 # 非贪婪(惰性)匹配 .*?x 表示匹配任意字符 任意多次数 但是一旦遇到x就停下来 转义符 原本有特殊意义的字符,到了表达它本身的意义的时候,需要转义 有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义 [().*+?] 所有的内容在字符组中会取消它的特殊意义 [a\-c] -在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面或最后面
一个很好用的正则表达式工具网站 :http://tool.chinaz.com/regex/?qq-f-to=pcqq.group