话题突然一指,什么是正则表达式呢?为什么咱们需要学习正则表达式的书写呢?学习这个有什么用,能帮助我们解决什么问题?带着疑问,咱们一块来看看“正则表达式”;
什么是正则表达式?
规定了一个字符串中字符出现规律的规则。
为什么需要学习正则表达式?
主要是当我们输入的关键词有多种变化的时候,(1)按照规则模糊查找多种关键词(2)用规则验证用户输入的格式
正则表达式其实是由字符集和量词,根据选择和分组操作,设计出来的一种规则,然后发挥它的作用
那么什么是字符集呢?
字符集 | What | When | 强调 |
---|---|---|---|
标准符集 | 规定一位字符的规则 | 只要一位字符,但是有多个备选字时 | 一个字符集只能匹配一个字符 |
预定义字符集 | 简化的几种规则 | 不限 | 无 |
- 标准字符集
- [0-9]、[a-z]、[A-Z]、[A-Za-z0-9]、[\u4e00-\u9fa5]
- 预定义字符集
\d | \w | \s | . |
[0-9] | [A-Za-z0-9_] | 空格、制表符 | 通配符(*和?) |
那么什么是量词呢?
上文中,我们明显可以做到基本的限制规则,但是有些时候需要判断我们输入字符集的出现“次数”,那么此时“量词”就发挥作用了-规定了一个字符集出现次数的规则
量词 | 字符集 | 描述 | 使用 |
---|---|---|---|
有明确的边界 | {n,m}、{n,}、{n} | 至少n个,最多m个;n个以上;必须是n个 | 字符集后面 |
没有明确边界 | ?、*、+ | {0,1}、{0,}、{1,} | 字符及后面 |
既然已经学习了字符集和量词,剩下的就是把他们拼装到一快,然后发挥相应的作用?
- 分组
- 多个规则,相互之间划分界限值,其实就是();
- 示例:
- 身份证号:\d{15}(\d\d[0-9Xx])?
- 自定义生日格式:(\d{4})(\d{2})(\d{2})
- 选择
- 多个规则之间,优先级划分,其实就是|符号;
- 示例:
- 成都:(成|w(ei)?)\s*(都|x(in)?)
如此一来,我们便可以相互之间搭配,实现咱们想要的效果了,但是好像还有个问题?
- 问题:假如我们有些时候,仅仅想要筛选某一段字符串之内的数据,那么此时又该如何设置
- 四大常用符号
- ^ $ :表示从头到尾完整匹配规则
- ^:表示字符串开头
- $:表示字符串结尾
- \b:固定匹配完整的单词,忽略空格、开头、结尾、标点符号
学习和了解到这里,我们还缺点什么?-工具“RegexBuddy 3”
一款超级不错的编写和测试正则表达式工具,亲测过,具体如图表示