正则表达式中的核心概念

正则表达式的目的是操纵文本。常用的概念如下,理解了这些概念可以更方便的理解正则表达式,也可以自己来写正则表达式。

原义字符:即正常的字符,例如:A,b,c ,1,2等。

元字符:元字符代表的是一类字符或位置描述。例如 “.”,这个点在正则表达式中代表除了换行符以外的任意字符。

常用的元字符:

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

重复:

为了方便描述字符重复的次数,正则表达式中有以下限定符可以使用

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

再例如“*”,星号在正则表达式中表示*前边的内容可以连续重复使用任意次, a*就表示任意个a。 a{3}就表示“aaa”


自定义范围:

如果想匹配没有预定义元字符的字符集合怎么办?可以自定义范围,例如:想匹配a,b,c,d中任意一个字符,就可以定义[abcd], 那么[abcd] 就可以匹配a或b或c或d。


分支条件:

分支条件表示满足几种原则中的一种就是认为是匹配的。例如要在文档中搜索3位数字后跟一个“-” 或4位数字后跟一个“-”,正则表达式可以这样写:\d{3}|\d{4}

要理解“|” ,这个是表示或的意思。

分组:

分组是为了匹配重复的子串,例如“abcabc”,abc重复了两次,正则表达式中怎么写呢,正则表达式中可以用小括号来定义分组,(abc){2} 就表示abcabc,(\d{3}.){3} 就表示类似123.123.345.456 的字符串

反义:

有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义

常用反义

代码/语法说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^abcde]匹配除了abced这几个字母以外的任意字符

后向引用

在正则表达式中定义了分组,如果在正则表达式的后面还要用到,怎么办呢,你可以再写一遍,也可以通过后向引用,来引用前面定义好的分组。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。也可以自己指定子表达式的组名。例如前面定义的组(abc),如果加上名称就是(?<myname>abc,这个分组的名称就是myname。如果有一个字符串“abchelloabc”,想匹配这个字符串,就可以用下面的正则表达式(?<myname>abc)hello\k<myname> 。注意后面的\k<myname>, 它就代表了前面定义的分组(abc)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值