正则表达式基础知识
文献种类:专题技术
开发工具与关键技术: vs与c#正则表达式
作者:吴新洋 ; 撰写时间 2019 年 4 月 1 日
文献编号 ; 归档时间 年 月 日
- 普通字符:所有大小写字母,所有数字,标点符号和其他符号。
- 非打印字符:
\f:匹配一个换页符。
\n:匹配一个换行符。
\r:匹配一个回车符。
\s:匹配空白字符,如空格,制表符,换页符。
\t:匹配一个制表符。
\v:匹配一个垂直制表符。
\w:匹配字母,汉字,下划线的字符。 - 特殊字符:包含特殊意义的字符,如果匹配这些字符则需要转义,将字符(\)
写在他们前面
$:匹配字符串的结尾处。
:匹配一个子表达式零次或多次,匹配用*。
+: 匹配一个子表达式一次或多次,匹配+用+。
.:匹配除换行符以外的任意单字符,匹配.用.。
[:标记一个中括号表达式开始,匹配[用[。
?:匹配前面表达式零次或一次,匹配?用\?。
:将下一个字符标记或特殊字符或后项引用。
^:匹配输入字符串开始位置,
{:标记限定符表达式的开始,
|:指明两项之间的一个选择。
*限定符
{n}:n是一个非负整数,匹配n次,列如,’o{2}’ 不能匹配boy中的o,但能匹配Boos中的两个o。
{n,}::n是一个非负整数,至少匹配n次,列如,’o{2}’ 不能匹配boy中的o,
但可以匹配Boooooo中的o。
{n,m}:n和m都是非负整数,n<m,最少匹配n次,最多匹配m次。;列如,”o{1,3}”将匹配booooos中的前三个。
*定位符
\b匹配一个字边界。
\B非字界匹配。
*反义:
\W:匹配任意不是字母,数字,下划线,汉字的字符 ,等价[^A-Za-z0-9]。
\S:匹配任意不是空白符的字符。
\D:匹配任意非数字的字符。
\B:匹配不是单词开头或结束的位置。
[^m]:匹配除了m以外的任意字符。
*零宽断言
(?=exp):匹配exp前面的位置。
(?<=exp):匹配exp后面的位置。
(?!exp):匹配后面跟的不是exp的位置。
(?<!exp):匹配前面不是exp的位置。
举例:(?=exp)叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=sb\b),匹配以sb结尾的单词的前面部分(除了ing以外的部分),如查找affafaf singsb dsfg yohhure dancsb.时,它会匹配sing和danc。
举例:(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bsb)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找sbding fhhh hhh时,它匹配ding。
*贪婪与懒惰
*?:重复任意次,但尽可能少的重复。
+?:重复1次或更多次,但尽可能少的重复。
??:重复1次或0次,但尽可能少的重复。
{n,m}?:重复重复你n到m次,但尽可能少的重复。尽可能少的重复。
{n,}?:重复n次以上,但尽可能少的重复。
常用正则表达式:
只能输入汉字:"1{0,}KaTeX parse error: Expected group after '^' at position 18: … 只能输入5~9位的数字:。"^̲\d{5,9"。
验证用户密码:"2\w{5,17}KaTeX parse error: Expected group after '^' at position 25: …位。 只能输入非零的正整数:"^̲\+?[1-9][0-9]*"。
只能输入零和非零开头的数字:"^(0|[1-9][0-9])
"
。
只
能
输
入
长
度
为
5
的
字
符
:
"
.
5
"。 只能输入长度为5的字符:"^.{5}
"。只能输入长度为5的字符:".5"。
只能输入至少9位的数字:"^\d{9,}
"
只
能
输
入
零
和
非
零
开
头
的
数
字
:
"
(
0
∣
[
1
−
9
]
[
0
−
9
]
∗
)
" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)
"只能输入零和非零开头的数字:"(0∣[1−9][0−9]∗)"。
验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。