正则表达式分组捕获非捕获的示例理解

举几个例子

一、使用捕获型()

比如0.23

1、(^\d+)(\.)(\d{0,2})

正则表达式有3个()使用match就会产生3个分组

2、^\d+\.\d{0,2}

没有(),不产生分组

二、非捕获型(?:)

(?:^\d+)(\.)(\d{0,2})

第一个分组不再捕获

原文地址:https://www.cnblogs.com/zhaogaojian/p/12207959.html

时间: 2024-07-30 10:10:24

正则表达式分组捕获非捕获的示例理解的相关文章

正则表达式 1. 分组提取/非捕获组

https://www.zybuluo.com/Zjmainstay/note/709093 1. 分组提取/非捕获组 分组,是正则里一个非常重要的概念,我们需要针对某个区域提取数据,往往需要依赖分组.而分组,其实就是正则里()括住的部分. (1.1)分组提取 需求:在分组1中匹配meta中author属性的值源串:<meta author="Zjmainstay" />another author="Zjmainstay too"预期:分组1得到Zjm

正则表达式 非捕获性分组

非捕获性分组语法为(?:pattern),即将pattern部分组合成一个可统一操作的组合项,但不把这部分内容当作子匹配捕获,匹配的内容部进行编号也不存储在缓冲区中供以后使用.非捕获性分组方法在必须进行组合.但又不想对组合的部分进行缓存的情况下非常有用. 例如,要在一篇英文资料中查找"program"和"project"两个单词,正则表达式可表示为/program|project/,也可表示为/pro(gram|ject)/,但是缓存子匹配(gramject)没有意

JavaScript正则表达式-非捕获性分组

非捕获性分组定义子表达式可以作为整体被修饰但是子表达式匹配结果不会被存储. 非捕获性分组通过将子表达式放在"?:"符号后. str = "img1.jpg,img2.jpg,img3.bmp"; reg = /(?:\w*)(?=\.gif)/; arr_m = str.match(reg);//arr_m = ["img1","img2"]

正则表达式中的捕获和非捕获

之前我们在做例子的时候,我们看到过这种捕获的形式,我们也试过反向引用.那像我们捕获的内容,可以通过一个正则表达式的模式,或者部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储.缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式.每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数.当然,如果我们不想捕获我们的文本,可以使用非捕获元字符 '?:'.'?=' 或 '?!' 来重写捕获

php 正则表达式捕获组与非捕获组

熟练掌握正则表达式是每个程序员的基础要求,对于每个初学者来说会被正则表达式一连串字符弄得头晕眼花.博主便会如此,一直对正则表达式有种莫名的恐惧.近来看到另一位博友写的 <php正则表达式>一文获益良多,对其通配符以及捕获数据两个章节颇感兴趣.这两个章节正好涉及到的是正则表达式的捕获组与非捕获组的知识,因而本文来细细探讨下这部分知识. 我们知道,在正则表达式下(x) 表示匹配'x'并记录匹配的值.这只是比较通俗的说法,甚至说这是不严谨的说法,只有()捕获组形式才会记录匹配的值.非捕获组则只匹配,

Python中正则匹配使用findall,捕获分组(xxx)和非捕获分组(?:xxx)的差异

转自:https://blog.csdn.net/qq_42739440/article/details/81117919 下面是我在用findall匹配字符串时遇到的一个坑,分享出来供大家跳坑. 例题: 如图所示: 正则a和正则b两个式子匹配出来的结果是不同的. 那 ?: 的作用就是把捕获分组转变为非捕获分组. 什么是捕获组和非捕获组呢? (qq|163|126) ---> 这样单独的括号就为捕获组 (?:qq|163|126) ---> 这样在原有分组里加上?: 就把捕获组转变为一个非捕获

正则数量词及非捕获

一.数量词:Greedy Reluctant Possessive         String str = "abcdabg"; // ①Greedy // output:abcdab Pattern pattern1 = Pattern.compile(".*ab"); Matcher matcher1 = pattern1.matcher(str); while (matcher1.find()) { System.out.print(matcher1.gro

Capturing versus non-capturing lambdas 捕获和非捕获的Lambda表达式

Capturing versus non-capturing lambdas Lambdas are said to be "capturing" if they access a non-static variable or object that was defined outside of the lambda body. For example, this lambda captures the variablex: int x = 5; return y -> x +

正则表达式分组()、断言(?&lt;:)详解

正则表达式中的断言,作为高级应用出现,倒不是因为它有多难,而是概念比较抽象,不容易理解而已,今天就让小菜通俗的讲解一下. 如果不用断言,以往用过的那些表达式,仅仅能获取到有规律的字符串,而不能获取无规律的字符串. 举个例子,比如html源码中有<title>xxx</title>标签,用以前的知识,我们只能确定源码中的<title>和</title>是固定不变的.因此,如果想获取页面标题(xxx),充其量只能写一个类似于这样的表达式:<title>