正则表达式

1.正则表达式用途

2.基础

2.1 单元

单字符

  • 普通字符,例如a、b、c;
  • 字符集,写法为[ctx],例如[abc]、[a-z];
  • 取反字符集,写法为[^ctx],例如[^{}]表示大括号的字符集;
  • 简写集,写法为\ctx,例如\w表示字母数字下划线集合;
  • 特殊符号,写法为\ctx,例如\.表示字符.,\t表示制表符;
  • POSIX字符类,写法为[:name:],和简写集部分重叠,
    例如[:alpha:]表示字母集。
    关于POSIX字符类有一点要注意,需要写成[[:alpha:]],而不是[:alpha:];

简写集和特殊符号表如下:
在这里插入图片描述
POSIX字符类表如下:
在这里插入图片描述

字符串、子表达式、或操作

  • 字符串,例如strabc;
  • 子表达式,写法为(regular),例如([abc]*);
  • 或操作,写法为u1 | u2 | u3,例如(a | [cba] | [abc]*)。
    功能上而言,我觉得就是广义的“字符集”,可以自定义出基于字符、字符串、子表达式的单元集合,而不仅仅局限于字符;

2.2 重复次数

固定重复次数

  • 0到N次,写法为ctx*,例如[abc]*;
  • 1到N次,写法为ctx+,例如[abc]+;
  • 0到1次,写法为ctx?,例如[abc]?;

范围重复次数

  • m到n次,写法为ctx{m,n},例如[abc]{1,10};
  • m到N次,写法为ctx{m,},例如[abc]{m,};
  • m次,写法为ctx{m},例如[abc]{m};

3.其他特性

3.1 贪婪匹配和懒惰匹配

正则表达式默认采用贪婪匹配,例如

.*at => The fat cat sat on the mat => 整个字符串被匹配

可能的结束点’fat‘、‘cat’、'sat’被忽略了,知道’mat’才结束匹配。如果说高级语言的if else匹配是就近原则,这里可以说是就远原则,这就是所谓贪婪匹配。
可以调整为就近原则,也就是懒惰匹配:

.*?at => The fat cat sat on the mat => The fat被匹配

3.2 边界问题

字符串界定

正则表达式查找的范围为“字符串”,默认是全部内容算作一个“字符串”,而不是常规的以换行符\n来界定一个字符串。
可以开启多行模式来转换成常规的\n界定字符串的情况。

字符串开头结尾匹配检验

  • 字符串开头检验,写法为^ctx,
    例子为检验xml文件开头的合法性,

正则表达式:^\s*(<?xml.*?>

	invaild
	<?xml version = "1.0" encoding = "UTF-8" ?>

如上的xml文件将判定为不合法;

  • 字符串结尾检验,写法为ctx$,
    例子为检验html文件结尾合法性,

正则表达式:</[Hh][Tt][Mm][Ll]>\s*$

<html/> invaild

如上的html文件将判定为不合法;

待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值