加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式中的圆括号的作用

发布时间:2020-12-14 02:23:06 所属栏目:百科 来源:网络整理
导读:1.正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本。 2.圆括号用法I:对字符或元字符进行分组,这样在圆括号内就可以对字符组合使用限定符。 eg. 匹配A+一个数字+A+一个数字:(Ad){2} 3.圆括号用法II:表示可选择性。 3.1 从两个直接量中选

1.正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本。

2.圆括号用法I:对字符或元字符进行分组,这样在圆括号内就可以对字符组合使用限定符。

eg. 匹配A+一个数字+A+一个数字:(Ad){2}

3.圆括号用法II:表示可选择性。

3.1 从两个直接量中选择一个

eg. gr(a|e)y匹配gray和grey,该例子还可以使用gr[ae]y,字符类效率更高。

3.2 从多个直接量中选择

eg. (Doctor|Dr.?)匹配Doctor,Dr,Dr.三种情况

3.3 错误匹配的交替行为,

使用交替行为时,有时会出现意想不到的错误。

eg. 用(a|ab)匹配ab时,只能匹配a,但是如果用(ab|a),则可以匹配ab

4.捕获圆括号:正则表达式中,与位于圆括号之间的模式匹配的内容都会被捕获。

4.1 当模式中有嵌套的圆括号时,变量的编号会按照圆开括号出现的位置一次进行。

eg. ([A-Za-z](d{2}))((-)d{2})匹配”A22-33”时,匹配情况如下:

Group 1: A22

Group 2: 22

Group 3: -33

Group 4: -

4.2 .NET中,可以创建命名的组,语法为:

(?<组名>模式)或(?’组名’模式)

eg. (?<FirstLetter>w(?'Num'd{2}))((-)d{2})匹配” A22-33”情况为:

Group "FirstLetter": A22

Group "Num": 22

Group 1: -33

Group 2: -

4.3 非捕获的圆括号:.NET和JavaScript都提供了非捕获圆括号的功能,即圆括号的内容不作为捕获对象,当圆括号中的内容不是想捕获的对象时,采用非捕获圆括号可以提高匹配效率。语法为:

(?:the-non-captured-content)

eg. (w(?:d{2}))((?:-)d{2})匹配” A22-33”情况如下:

Group 1: A22

Group 2: -33

注:d{2}匹配的”22”没有被捕获

5.反向引用(backreferences)

语法:.NET和JavaScript中,表示匹配第一组的变量被指定为”1”

能够体现反向引用的便利性的一种情况是找到句子中重复的单词。

eg. 查找下列句子中重复的单词:

I think that that is often overdone.

This sentence contains contains a doubled word or two two.

我们用([A-Za-z]+) +1b来匹配,红色部分为匹配的结果

在这个匹配模式中([A-Za-z]+)为匹配的第一组变量,后面加一个或多个空格( +)表示单词间隔,

然后用”1”来表示第一组匹配的变量(即[A-Za-z]+匹配的内容),最后一个表示单词的结束(b)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读