正则指引-括号

本文深入解析正则表达式的分组、量词与替换功能,通过具体实例演示如何利用括号改变量词作用范围,并讲解如何在匹配的正则表达式中引用分组文本,实现复杂文本处理。同时,介绍正则表达式替换的基本语法及应用场景,以及如何通过`group(num)`方法获取匹配的文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则指引-括号
之前学习字符组和量词,量词是形容字符组的,但是有时候我们希望用量词来形容多个元素,

我们可以用括号完成,我们可以使用(...)把目标元素括起来,就可以把括号内部看成一个整体,

在括号外部使用量词,量词就会对括号内部的所有元素作用。
用括号改变量词的作用元素:
re.research(r"^ab+$","ab"); != none   //true
re.research(r"^ab+$","abb"); != none   //true
re.research(r"^(ab)+$","abb"); != none   //false
re.research(r"^(ab)+$","abab"); != none   //true
括号的这种能力就做分组,括号还可以配合"|"来使用,使用形式(...|...),

在括号内用|分隔子表达式形成多选分支,分支数量没有限制,整个多选分支看成单个元素,

只要其中某一个分支表达式匹配成功,整个表达式就匹配成功,都不能则失败。

多选结构,一般是(..|..),但是有时候没有括号,就相当于最外边有一个括号,把整体看成一组。

括号有了分组的功能,还有在使用括号之后,正则表达式会保存每一个分组真正的文本,

还可以通过group(num),方法来获取匹配的文本:
re.research(r"(\d{4})-(\d{2})-(\d{2})","2010-08-09");
.group(1)  //2010
.group(2)  //08
.group(3)  //09

在最外层还有一个隐式的括号,使用group(0)或group()获得:2010-08-09,

分组的编号是根据开括号的出现顺序确定的,第一个出现编号的就是1,因为始终最外层还有一个隐式的括号,它的编号才是0.
正则表达式替换:re.sub(pattern,replacement,string)
其中parttern用来匹配被替换的文本表达式,replacement是要替换的文本,String是要被替换的文本。
re.sub("[a-z]"," ","a1b2c3"); // 1 2 3
在替换中使用分组:
re.sub(r"(\d{4})-(\d{2})-(\d{2})",r"\1年\2月\3日","2010-08-09");  // 2010年08月09日
结果是将匹配的123组替换\1\2\3。
反向引用:
能应用分组的子表达式匹配的文本,一般是在匹配完成之后进行,也能在匹配的正则表达式中引用,这种功能叫做反向引用:
re.research(r"^([a-z])\1$","aa"); != none   //true
re.research(r"^([a-z])\1$","ab"); != none   //false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值