本文为半成品
最开始的一些内容
本文侧重于介绍正则表达式的基本思路以及语法。
正则表达式中语法多样,想对每条规则都准确记忆,除非大量、频繁地使用,否则基本不可能。
记忆所有语法,是一件性价比很低的事情。个人认为,没有必要记住所有,只需要记忆常用语法即可。
从例子开始,理解例子之后再自己对例子进行修改、尝试,是学习正则表达的最好方法。
推荐在学习的同时,随便搜索一个“正则表达式在线测试”一类的工具,作为辅助。
正则表达式是什么
一种用于描述、匹配文中全部匹配指定格式的字符串的语法。功能与通配符相似,但比通配符描述方式更多样、更准确。
场景
邮箱匹配,密码合法性检查,伪静态规则,提取字符串等等。
基本思路
将字符逐个对照进行匹配,且大小写敏感。
对于运算符,如+
.
等,作用范围为单个字符或字符集。
例如:
(ab)+用于匹配>=1个”ab”;
ab+用于匹配在a之后同时出现>=1个”b”的字符串。
需要转义的字符
$
、()
、*
、+
、.
、[
、\
、?
、^
、{
、|
这些字符都是有特殊含义的,所以如果要匹配这些字符,需要进行转义。
例如:
匹配 “*” 需要用 “*”
普通字符
多数情况下,反义以^
([a-z]
与[^a-z]
)或大写(\d
与\D
)来表示。
字符 | 含意 |
---|---|
[a-z] | 匹配所有小写字母 |
[^a-z] | 匹配所有非小写字母 |
[A-Z] | 匹配所有大写字母 |
[^A-Z] | 匹配所有非大写字母 |
\d | 匹配一个数字字符,等价于[0-9] |
\D | 匹配一个非数字字符,等价于[^0-9] |
\w | 匹配字母、数字、下划线 |
\W | 匹配非字母、数字、下划线,等价于[^a-zA-Z0-9_] |
非打印字符
字符 | 含意 |
---|---|
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\f | 匹配一个换页符 |
\s | 匹配一个空白字符 |
\S | 匹配一个非空白符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
限定符
字符 | 含意 |
---|---|
* | 之前的字符出现>=0次,等价于{0,} |
+ | 之前的字符出现>=1次,等价于{1,} |
? | 之前的字符出现1次或0次,等价于{0,1} |
{n} | 之前的字符出现n次 |
{n,} | 之前的字符出现>=n次 |
{n,m} | 之前的字符出现>=n,<=m次 |
定位符
字符 | 含意 |
---|---|
^ | 匹配开始位置 |
$ | 匹配结束位置 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |