正则表达式

元字符

特殊的字符,术语叫 metacharacters(元字符)。

它们出现在正则表达式字符串中,不是表示直接匹配他们, 而是表达一些特别的含义。

. 	  *	       +	 ? 	      \ 	[] 	        ^ 	    $ 	   {}	  | 	()

.

表示要匹配除了换行符之外的任何单个字符。

*

表示匹配前面的子表达式任意次,包括0次。

紧跟在.后面, 表示 任意字符可以出现任意次。

+

表示匹配前面的子表达式一次或多次,不包括0次。

[]

表示要匹配指定的几个字符之一 。

^

  1. 表示匹配字符串的开始位置。
  2. 用在[]中表示取反。

$

表示匹配字符串的结束位置。

{}

表示前面的字符匹配 指定的次数 。

语法匹配
{n,m}匹配前面子表达式n到m次
{n}匹配前面子表达式n次
{n,}匹配前面子表达式至少n次
{,m}匹配前面子表达式之多m次

?

懒惰匹配,表示匹配前面的子表达式0次或1次。

语法匹配
*?重复任意次,但尽可能少重复
+?重复一次或多次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
<html><head><title>Title</title>匹配所有出现的标签
贪婪匹配:<.*>
懒惰匹配:<,*?>

\

转义符。

  1. 转义元字符

    \.		\*		\+		\$		\\
    

    元字符.*+$等用在[]中匹配字符本身时,不需要使用\进行转义。

    但是元字符\^用在[]中匹配字符本身时,情况特殊。

  2. 匹配某种字符类型

    语法匹配
    \d匹配0-9之间任意一个数字字符,等价于表达式 [0-9]
    \D匹配任意一个不是0-9之间的数字字符,等价于表达式 [ ^0-9]
    \s匹配任意一个空白字符,包括 空格、tab、换行符等,等价于表达式 [\t\n\r\f\v]
    \S匹配任意一个非空白字符,等价于表达式 [ ^ \t\n\r\f\v]
    \w匹配任意一个文字字符,包括大小写字母、数字、下划线,等价于表达式 [a-zA-Z0-9],缺省情况也包括 Unicode文字字符,如果指定 ASCII 码标记,则只包括ASCII字母
    \W匹配任意一个非文字字符,等价于表达式 [ ^a-zA-Z0-9]

|

表示匹配 其中之一 。

特别要注意的是, 竖线在正则表达式的优先级是最低的, 这就意味着,竖线隔开的部分是一个整体。

()

组选择。组就是把正则表达式匹配的内容 里面其中的某些部分标记为某个组。目的是对以匹配的字符中进一步提取关心的内容。

预查断言

表达式描述
(?=)正向预查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code
(?!)正向否定预查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code
(?<=)反向预查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep
(?<!)反向否定预查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep

工具

基础正则表达式速查表

正则表达式可视化工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>