Java中 正则表达式中 组 是怎么用的?我看了n遍,没看懂
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中 正则表达式中 组 是怎么用的?我看了n遍,没看懂相关的知识,希望对你有一定的参考价值。
组其实就是用来提取正则中匹配到的内容。比如有正则表达式:abc(\d2,5)efg,这个正则本身的意思很简单,就是字符串abc和efg之间有2到5个数字,所以字符串"abc12efg"、“abc34567efg”都能满足这个正则匹配。这个相信你能理解。
那么正则表达式模式中用小括号包起来的"\d2,5"这部分就叫“捕获组”,正则表达式引擎会将这部分匹配到的内容记下来,以便以后取用。java代码中,可以在调用Matcher对象的find方法得到true的返回值的时候(true说明正则表达式模式找到了符合匹配的内容),调用该Matcher对象的group(int groupNo)方法获得指定的组内容。还拿刚才那个例子来说,调用matcher.group(1)就会得到"12"、“34567”这样实际匹配的内容。这里要特别注意一下,组编号是从1开始计算的。0号组实际上就是整个正则表达式匹配到的内容。
再深入一点,上面讲到的所谓组是“捕获组”,正则引擎会记下来匹配内容,但是有时候我们不需要捕获,只是想要限制匹配,就会用到非捕获组。如果你真明白了捕获组,再看非捕获组以及前瞻后顾就明白了。 参考技术A 什么正则,网上查一下都有。你说的组是不是指范围 a-z?追答
看了下,就是一个方括号的内容,比如[a-z][0-9]\1那个\1就是[a-z], 知道为什么我为什么理解的这么快吗? 原因是我上英文网站查的,没有一堆乱七八糟的术语。
圆括号,打错
正则中的[中
正则表达式的() [] {}有不同的意思。
//() 是为了提取匹配的字符串
- [] 是定义匹配的字符范围
- {} 一般用来表示匹配的长度
括号
作用1: 把单独的项组合成子表达式,以便可以处理一个独立的单元那样用“|”、“*”、“+”、“?”等来对单元内的项进行处理。
例如:
1 | // 可以匹配 字符串 java ,其后有没有 “script” 无所谓 |
作用2: 在完整的模式中定义子模式,当一个正字表达式成功地和目标字符串相匹配时,可以从目标串中抽出和圆括号中的子模式相匹配的部分。
假设,我们正在匹配一个或多个小写字母后面跟随了一位和多位数字,则可以使用 /[a-z]+d+/
,假设我们只关心每个匹配尾部的数字,如果将模式的数字部分放在括号中/(/[a-z]+(d+)/)/
,就可以从检索到的匹配中抽取数字了。
作用3: 允许在同一正则表达式的后部引用前面的子表达式。;
表达式中有几个()
就有几个相应的匹配字符串。
(s*)
表示连续空格的字符串。
以上是关于Java中 正则表达式中 组 是怎么用的?我看了n遍,没看懂的主要内容,如果未能解决你的问题,请参考以下文章