正则表达式

基础

元字符描述简写描述
.句号匹配任意单个字符除了换行符。.除换行符外的所有字符
[ ]字符种类。匹配方括号内的任意字符。\w匹配所有字母数字,等同于 [a-zA-Z0-9_]
[^ ]否定的字符种类。匹配除了方括号里的任意字符\W匹配所有非字母数字,即符号,等同于: [^\w]
*匹配>=0个重复的在*号之前的字符。\d匹配数字: [0-9]
+匹配>=1个重复的+号前的字符。\D匹配非数字: [^\d]
?标记?之前的字符为可选.\s匹配所有空格字符,等同于: [\t\n\f\r\p{Z}]
{n,m}匹配num个大括号之前的字符或字符集 (n <= num <= m).\S匹配所有非空格字符: [^\s]
(xyz)字符集,匹配与 xyz 完全相等的字符串.\f匹配一个换页符
|或运算符,匹配符号前或后的字符.\n匹配一个换行符
\转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ |\r匹配一个回车符
^从开始行开始匹配.\t匹配一个制表符
$从末端开始匹配.\v匹配一个垂直制表符
\p匹配 CR/LF(等同于 \r\n),用来匹配 DOS 行终止符
符号描述例子解释
?=正先行断言-存在`(Tt)he(?=\sfat)` => The fat cat sat on the mat.
?!负先行断言-排除`(Tt)he(?!\sfat)` => The fat cat sat on themat.
?<=正后发断言-存在`(?<=(Tt)he\s)(fat
?<!负后发断言-排除`(?<!(Tt)he\s)(cat) `=> The cat sat on cat.
标志描述例子解释
i忽略大小写。/The/gi => The fat cat sat on the mat.表达式 /The/gi 表示在全局搜索 The,在后面的 i 将其条件修改为忽略大小写,则变成搜索 theTheg 表示全局搜索。
g全局搜索。/.(at)/g => The fatcatsat on the mat.修饰符 g 常用于执行一个全局搜索匹配,即(不仅仅返回第一个匹配的,而是返回全部)。
m多行修饰符:锚点元字符 ^ $ 工作范围在每行的起始。/.at(.)?$/gm => The fat
cat sat
on the mat.
多行修饰符 m 常用于执行一个多行匹配。
惰性匹配默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。/(.*?at)/ => The fat cat sat on the mat.使用 ? 将贪婪匹配模式转化为惰性匹配模式

练习题

问题表达式解释
1匹配整数或者小数(包括正数和负数)-?\d+(\.\d+)?-?表示-匹配0次或一次,\d表示整数,+表示匹配一次或多次,(.\d+)?表示小数
2匹配年月日日期`1\d{0,3}-(1[0-2]0?[1-9])-(3[01]
2. (1[0-2]|0?[1-9])中前面的1[0-2]表示从10到12,后面的0?[1-9]表示01-09或者1-9, (1[0-2]|0?[1-9])表示月,01-12或者1-12
3. (3[01]|[12]\d|0?[1-9])$其中3[01]表示30或31,[12]\d表示从10-29,最后的0?[1-9]表示从01-09或者是从1-9.整体就表示从01-31或者1-31
3匹配qq号[1-9]\d{4,11}表示5位到12位qq.第一位为非0
411位的电话号码1[3-9]\d{9}第一位数字为1,第二位为3-9,后面随便9位数
5长度为8-10位的用户密码 : 包含数字字母下划线\w{8,10}
6匹配验证码:4位数字字母组成的[\da-zA-Z]{4}或者[0-9a-zA-Z]{4}[ ]里面的表示数字,或者a-z或者A-Z,{4}表示4位
7匹配邮箱地址[0-9a-zA-Z][\w\-.]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)\*\.[A-Za-z0-9]{2,6}[0-9a-zA-Z][\w\-.]+ @前面必须有内容且只能是字母(大小写),数字,下划线,减号,点
[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)\* @和最后一个点之间必须有内容且只能是字母(大小写),数字,点,减号,且两个点不能挨着
[A-Za-z0-9]{2,6} 最后一个点之后必须有内容且内容只能是字母(大小写),数字长度为大于等于2, 小于等于6
8<a>wahaha</a>匹配标签<\w+>
91-2\*((60-30+(-40/5)\*(9-2\*5/3+7/3\*99/4\*2998+10\*568/14))-(-4\*3)/(16-3\*2))
从上面算式中匹配出最内层小括号以及小括号内的表达式\([^()]+\)\(\)表示前后位( ), [^()]就表示外面的()里面没有()
10从类似9-2*5/3+7/3*99/4*2998+10*568/14的表达式中匹配出从左到右第一个乘法或除法\d+[\*/]\d+[*/]前后的\d+表示*/前面的整数,可能是多位数字,要加+

差分谱匹配正则
[*{} ]|^^\w+ 替换成 空
, 替换成

组匹配
\0


  1. 1-9 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值