正则表达式基础
正则表达式
正则表达式是一种被用于从文本中检索符合某些特定模式的文本。
1. 元字符:
元字符是构造正则表达式的基本元素:
| 元字符 | 说明 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配字母或数字或下划线或汉字 |
| \s | 匹配任意的空白字符 |
| \d | 匹配数字 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
- 匹配有abc开头的字符串:
\babc 或着 ^abc
- 匹配8位数字的QQ号码:
^\d\d\d\d\d\d\d\d$
- 匹配以155开头的11位数字的手机号码:
^155\d\d\d\d\d\d\d\d$
2. 重复限定符
为了避免重复地书写元字符,引入重复限定符。
| 语法 | 说明 |
|---|---|
| * | 重复0次或更多次 |
| + | 重复1次或更多次 |
| ? | 重复0次或1次 |
| 重复n次 | |
| 重复n次或更多次 | |
| 重复n到m次 |
使重复限定符对之前的正则表达式进行改造:
- 匹配8位数字的QQ号码:
^\d{8}$
- 匹配1开头11位数字的手机号码:
^1\d{10}$
- 匹配银行卡号是14~18位的数字:
^\d{14,18}$
- 匹配以a开头的,0个或多个b结尾的字符串
^ab*$
3. 分组
从上节的例4可以看到,限定符作用在左边最近的一个字符。如果想要ab同时被限定,应该怎么办呢?
正则表达式中使用小括号()来分组,即将括号中的内容作为一个整体。
例:匹配包含0到多个ab字符串
^(ab)*$
4. 转义
使用在这些限定符前加\,使元字符、限定符或关键字转移成普通字符。
例:匹配以(ab)开头的字符串
^(\(ab\))*$
5. 条件或
正则表达式使用符号 | 来表示或,当满足任何一个条件是,都会当做是匹配成功。
例:匹配所有联通的手机号
^(130|131|132|155|156|185|186|145|176)\d{8}$
6. 区间
正则表达式使用 [] 来表示区间条件。
- 限定0到9:[0-9]
- 限定A到Z:[A-Z], [a, z]
- 限定某些数字[165]
因此,前例可以改写为:
^((13[0-2]) | (15[5-6]) | (15[5-6]) | 145|176)\d{8}$
CS专业在读,热爱编程。
专业之外,喜欢阅读,尤爱哲学、金庸、马尔克斯。
专业之外,喜欢阅读,尤爱哲学、金庸、马尔克斯。

浙公网安备 33010602011771号