首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP正则捕获与非捕获

今天遇到一个正则匹配问题,忽然翻到有捕获概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP也是可行...,捕获是正则表达示以()括起来部分,每一对()是一个捕获。...捕获忽略与命名 我们还可以阻止PHP为匹配编号:在匹配模式前加  ?: $mode = '/a=(\d+)b=(?...捕获反向引用 我们在用preg_replace()函数进行正则替换时,我们还可以使用 \n 或 $n 来引用第n个捕获....非捕获用法: 为什么称为非捕获呢?那是因为它们有捕获特性,在匹配模式(),但是匹配时,PHP不会为它们编组,它们只会影响匹配结果,并不作为结果输出。 /d(?

2K90
您找到你想要的搜索结果了吗?
是的
没有找到

学习正则表达式 - 用 HTML 标记文本

一、需求         使用 rime.txt 柯勒律治诗文作为示例文本,通过正则表达式为普通文本添加 HTML5 标签。...正则表达式 ^(.*)$ 匹配原文本每一行,并将匹配结果放到一个捕获。 只替换第一行。 添加 html、head、title、body、h1 等标签,其中用 $1 引用捕获。 2.....))$ 匹配 ARGUMENT 标题和所有罗马数字行,并将匹配结果放到一个捕获替换所有匹配项。 添加 h2、/h2 标签,其中用 $1 引用捕获。 4....将匹配结果放到一个捕获替换所有匹配项。 给两个段落添加 p、/p 标签,其中用 $1 引用捕获。 5....正则表达式 ^([ ]{5,7}.*) 匹配每个开头有5至7个空格行,并将匹配结果放到一个捕获替换所有匹配项。 在每行诗文后添加换行标签 ,其中用 $1 引用捕获。 6.

13210

Java 正则表达式捕获

捕获组分为: 普通捕获(Expression) 命名捕获(?Expression) 普通捕获 从正则表达式左侧开始,每出现一个左括号"("记做一个分组,分组编号从 1 开始。...0 代表整个表达式。 对于时间字符串:2017-04-25,表达式如下 ? 有 4 个左括号,所以有 4 个分组: ? 命名捕获 每个以左括号开始捕获,都紧跟着 ?,而后才是正则表达式。...对于时间字符串:2017-04-25,表达式如下: ? 有 4 个命名捕获,分别是: ? 命名捕获同样也可以使用编号获取相应值。 ? PS 非捕获 在左括号后紧跟 ?...:,而后再加上正则表达式,构成非捕获 (?:Expression)。 对于时间字符串:2017-04-25,表达式如下: ? 这个正则表达式虽然有四个左括号,理论上有 4 个捕获。但是第一 (?...总结 ▼ 普通捕获使用方便; 命名捕获使用清晰; 非捕获目前在项目中还没有用武之地。

1.2K30

学习正则表达式 - 提取和替换 XML 标签

一、需求         使用 lorem.dita 作为示例 XML 文档,通过正则表达式提取出该文档所有 XML 标签,并转换为简单 XSLT 样式表。...提取文本所有 XML 标签 (1)编写匹配标签正则表达式 ]*> 第一个字符是左尖括号(<)。...在 XML 中元素可以以下划线字符 _ 或者 ASCII 范围大写或小写字母开头。 在起始字符之后,标签名称可以是零或多个除右尖括号 > 之外任意字符。 表达式以右尖括号结尾。...替换掉标签属性 select regexp_replace(a,' id=".*"','') a from t1         内嵌视图 t2 查询结果为去掉属性所有标签名称。...使用 dotall 模式后,正则表达式 ^(.*) 匹配整个多行文本,并将匹配结果放入一个捕获,1 引用捕获

38820

正则表达式 - 选择、分组和向后引用

三、捕获分组和后向引用         当一个模式全部或者部分内容由一对括号分组时,它就对内容进行捕获并临时存储于内存。可以通过后向引用引用捕获内容,形式为 \1 或 1 。...这里 \1 或 1 引用是第一个捕获分组,而 \2 或 2 引用第二个捕获分组,以此类推。MySQL只接受 1 这种形式。         下面再展示一下后向引用使用方法。...正则替换函数,将原文分成两个捕获分组用作正则表达式替换字符串引用两个捕获分组并颠倒顺序。...替换命令搜索与文本“It is an ancyent Marinere”匹配内容,再将其捕获放入两个分组。...替换命令还将捕获文本重排为先是后向引用 \2 内容再是 \1 内容,再将匹配文本替换为重排后内容并输出。 替换命令结尾处 p 表示要打印该行。

2K50

精通正则表达式 - 正则表达式实用技巧

捕获问号在这里是必须,因为如果一行数据只包含空白字符行,必须出现问号,表达式才能正常工作。如果没有问号,可能会无法匹配,错过这种只有空白符行。...MySQL 正则表达式没有提供获取单个捕获方法,只能用 regexp_replace 函数以替换方式间接获取,并且要想确保只返回捕获,最好每次调用 regexp_replace 时只返回一个捕获...显然用这种方法获取所有捕获性能低下,因为明明应用一次正则表达式,引擎就已经获取了所有捕获值,只是 MySQL 没给用户提供相应函数。        ...如果愿意,可以使用分隔符一次性得到所有捕获,如 regexp_replace(@s, @r, '1|2', 1, 0, 'n'),用 | 符号作为分隔符连接起多个捕获。...把它们加到正则表达式 '44\d{3}' 之前,可以获得期望结果。非捕获型括号用来匹配不期望邮编,这样能够快速地略过它们,找到匹配邮编,在 $1 捕获括号

51040

正则表达式必知必会 - 反向引用

理解反向引用最好方法就是看看它实际应用,下面这段文本包含 3 重复单词。...为了弥补这一不足,一些比较新正则表达式实现还支持“命名捕获”(named capture):给某个子表达式起一个唯一名称,随后用该名称(而不是相对位置)来引用这个子表达式。...在一个正则表达式不能使用 ${分组名} 进行引用。 三、替换操作         搜索,也就是在一段文本里查找特定内容,可能是正则表达式最常干的事,但并不是它全部功能。...正则表达式还可以用来完成各种强大替换操作。简单文本替换操作用不着正则表达式。...当用到反向引用时,正则表达式替换操作才会变得让人印象深刻。         假设想把文本里电子邮件地址全都转换为可点击链接。

26550

浅谈单细胞转录测序捕获效率提升

screening with combinatorial fluidic indexing,这篇文章介绍是对10X单细胞转录测序捕获效率一些优化。...文章目的是想对血液CTC进行单细胞测序,无奈CTC在血液稀有性和10X捕获率正好冲突,于是设计了流体动力陷阱,或者说是差分流阻捕获。...在上样过程,当捕获室为空时,沿直通道流阻低于长环路旁路通道,主流沿直通道流动,导致流中出现单个细胞/珠被困在腔室。...这种捕获机制可确保在一个腔室捕获细胞/珠子不超过一个,从而实现了95%捕获率。...该平台具有通量大,并行能力强,操控自由度高特点,在小腔室可以完成一系列包括转录捕获,蛋白捕获或检测,代谢物检测等功能。

1.8K20

正则表达式 - 匹配 Unicode 和其他字符

列举这个函数原因是,我原本打算用 regexp_replace 函数,在第三个参数引用捕获分组方式一次性完成替换逻辑,但未能如愿,因为函数是在正则表达式匹配之前执行(后面会看到有例外)。...如下所示,upper 函数先于正则表达式执行,将参数常量字符变成大写,然后捕获 $1 才会原样输出。...前面说过 regexp_replace 第三个参数函数会在正则表达式匹配前执行,但 concat 函数是个例外,它会拼接到匹配字符串上,如: mysql> select initcap(regexp_replace...regexp_replace 将匹配 char(0)加上任意单一字符标识字符串替换掉,剩下就是符合要求结果。...如果把 Unicode Property 理解为一个“字符”,一定还有对应排除型字符,此排除型字符通行记法是将 \p{property} 小写改为大写 P,写作 \P{property}。

2.4K110

linux shell:提取正则表达式捕获(catch group)匹配字符串

]] && echo match matched 其实基于上面的表达式不仅可以判断是否匹配正则表达,还可以通过上面表达式创建变量 BASH_REGEX(数组)提取捕获(catch group),...]+)*) ]] \ && echo ${BASH_REMATCH[1]} ${BASH_REMATCH[2]} http www.baidu.com {BASH_REMATCH[0]} 即正则表达式捕获...0(全部字符串) {BASH_REMATCH[1]} 即正则表达式捕获1,以此类推 BASH_REGEX 是 bash定义保存正则表达式捕获变量,不同脚本解释有不同定义,比如zsh,ksh...就有另外变量定义方式 ksh 保存正则表达匹配数据数组变量名叫 .sh.match ,对BASH_REMATCH,引用时必须以${.sh.match}方式引用 {.sh.match[0]} 即正则表达式捕获...0(全部字符串) {.sh.match[1]} 即正则表达式捕获1,以此类推 zsh MATCH 保存匹配整个字符串,对应就是bashBASH_REMATCH[0] match保存捕获数据数组

4.3K10

正则表达式模式

($matches); 运行结果为: Array ( [0] => color: red [1] => red ) 根据定义,子(正则表达式圆括号)内容会按照左半边括号出现顺序...三、非捕获 有些时候子只是用来描述“分支”匹配,我们并不想让最后$matches里面出现括号里内容,此时可以用非捕获(?:)告诉正则表达式解析器,它不需要被捕获: '#(?...五、前向逆探测(Negative Lookahead) 与前向探测类似,只不过子表达式必须不满足才行。它构造方法为(?!): '#\d*(?!...九、子重复利用 利用下面的方式我们可以重复利用已经在正则表达式中出现: '#(\w+) (?1)#' 这个正则表达式会匹配'foo bar'。不过需要注意是,重用并不会被捕获。...如果想要捕获重用,则应该在子外面再加上一个括号: '#(\w+) ((?1))#' 我们甚至可以通过子名称来重复利用它: '#(?\w+) (?

1.6K120

正则表达式 - 边界

在MySQL正则表达式函数,使用 match_type n 值表示使用 dotall 模式。看如下正则表达式: ^THE.*\?$         我们想匹配以THE开头,以 ?...regexp_replace(a,'\\bthe\\b','') 将原字符串 the 单词替换掉,用 \b 确定单词边界。regexp_replace函数缺省不区分大小写。...|(){}[]\-         这15个元字符在正则表达式中有特殊含义,用来编写匹配模式。连字符在字符方括号中用来表示范围,但在其他情况下无特殊含义。        ...可以利用 \A 特性轻松实现。如前所述,无论是否使用多行模式,替换结果都一样。(\\A.*) 捕获分组获取第一行,$1 在第一行首尾加标签。...1 row in set (0.00 sec)         也可以将正则表达式改为 ^(.*)$ 匹配整行,然后只替换多行模式第一行,能达到相同效果。

2.5K10

【DB笔试面试461】Oracle常用正则表达式有哪些?

题目部分 Oracle常用正则表达式有哪些? 答案部分 正则表达式就是以某种模式来匹配一类字符串。一旦概括了某类字符串,那么正则表达式即可用于针对字符串各种相关操作。...例如,判断匹配性,进行字符串重新组合等。正则表达式提供了字符串处理快捷方式。在Oracle 10g及以后版本也支持正则表达式。...字符是指将模式某些部分作为一个整体。这样,量词可以来修饰字符,从而提高正则表达式灵活性。字符通过()来实现。...在许多编程语言中,可以利用“$1”、“$2”等来获取第一个、第二个字符,即所谓后向引用。...在Oracle引用格式为“\1”、“\2”a(b)*可以匹配ab、abb、abbb、youabb; (c|d)匹配c或d[]标记一个括号表达式[cd]匹配选择c或d等同于(c|d)。

51120

正则表达式 - 简单模式匹配

数字字符简写式 \d 更为简短,但却没有字符强大、灵活。...注意字符括号内) ^ 符号不再代表行头而是表示取反,意思其实就是“不匹配这些”或“匹配除这些以外内容”。 3....在英语环境,与 \w 匹配相同内容字符为:[_a-zA-Z0-9]         \W 匹配非单词字符,匹配空格、标点以及其他非字母、非数字字符。...regexp_replace 函数参数说明: a:需要被替换原字符串字段。 (^T.*$)':正则表达式,匹配 T 开头行,然后使用括号将文本捕获到一个分组。...         捕获分组 ^.*$ 说明: ^ 匹配字符串第一个字符之前位置。 $ 匹配字符串最后一个字符后面的位置。 . 匹配单个字符。除了换行符之外,它性质无关紧要。

73010

Vim查找替换及正则表达式使用详解

前言 正则表达式是文本处理领域中一个强大工具,它可以让文本处理能力呈指数级提升,如果一款文本编辑器不支持正则表达式,那么它就算不上是一个现代化编辑器,这绝非虚言。...下面这篇文章主要跟大家介绍了关于Vim查找替换及正则表达式使用相关内容,分享出来供大家参考学习,下面来一起看看吧。...:1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换; :10s/from/to/ 表示只在第10行搜索替换; :%s/from/to/ 表示在所有行搜索替换; 1,...正则表达式 1、元字符 元字符 元字符 说明 . 匹配任意字符 [abc] 匹配方括号任意一个字符,可用-表示字符范围。...匹配单词词尾 2、替换变量 在正则式以\(和\)括起来正则表达式,在后面使用时候可以用\1、\2等变量来访问\(和\)内容。

5.6K10

Aptana与Editplus查找并替换正则表达式应用

这里主要应用正则“反向引用”,关于正则更多概况,可参考: 《正则表达式30分钟入门教程》 从实际应用场景开始,比如页面中有如下DOM结构:            ...:) c、匹配使用了“反向引用”--- \1,因为需要确保前面出现xx一致 以Aptana为例,最终表达式:(?...在替换处可以使用你需要替换规则,其中$0表示参与匹配正则表达式字符串,$1…为最近使用()捕获分组字符串 而在Editplus,它对使用正则表达式进行查找和替换仅支持有限正则量词(详细可自行搜索...), 所以Editplus正则表达式需要进行一些变换了,但很遗憾,没有找到如何在Editplus中使用正则表达式反向引用,需要准确来讲,此时Editplus不能满足需求。...总结: 1、对反向引用支持,Aptana支持,使用\1、\2,而Editplus不支持 2、获取捕获分组,Aptana使用$0,$1、$2…,而Editplus使用是\0,\1、\2 3、查找并替换快捷键

1.2K30
领券