正则表达式
正则表达式
最近学了一点正则表达式
先来看一段正则表达式 (?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})
它能匹配年月日,像这种 “2021-08-21”, “2021-09-02”
但无法匹配 “2021,08,21”, “2021-8-21” 等,必须带有前导 0
但是怎么做到的呢,没错!通过 <> 里的英文单词来匹配 先分开来看
首先,年份肯定是数字,所以要匹配数字,然后吧
-
\d
匹配数字 \w
匹配下划线和任何一个数字、字母.
匹配除了换行符外的任何字符\s
匹配任何空白字符,包括空格、换行符、回车符、制表符、换页符、垂直制表符\S
跟\s
相反,匹配任何非空白字符\n
,\r
,\t
,\f
,\v
就分别表示换行符、回车符、制表符、换页符、垂直制表符- 空格的话用反斜杠加空格表示,即 ‘\ ‘
所以刚刚那一大串里的 \d
才是真正匹配数字的,而后面的花括号则是限定符,用来指定匹配的次数
(以下的 3 个 n 均为非负整数)
{n}
表示要匹配刚好 n 次,\d{4}
就表示要正好匹配 4 个数字{n,}
表示至少要匹配 n 次{n, m}
表示 (n ≤ 匹配次数 ≤ m)*
表示 (匹配次数 ≥ 0)+
表示 (匹配次数 ≥ 1)?
表示 (0 ≤ 匹配次数 ≤ 1)
但 -
是没有特殊含义的,所以如果要匹配年月日的话,正则表达式就应该这么写\d{4}-\d{2}-\d{2}
小括号括起来的内容是子表达式
()
标记一个子表达式的开始和结束位置,子表达式可以获取供以后使用^
匹配输入字符串的开始位置。但当其在中括号中使用时,表示不接受该方括号表达式中的字符集合。$
匹配输入字符串的结尾位置
而原本的年月日中的括号是命名编号捕获组,使用方法如下
(?P<名字>表达式)
后续可用”名字”获取子表达式匹配到的内容
中括号括起来的内容表示一个集合
[A-Z]
匹配所有大写字母[a-f0-9]
匹配十六进制数字[ABC]
匹配 A, B, C 三者
Subscribe to bbbiggest's blog
Get the latest posts delivered right to your inbox