php—PCRE正则表达式条件子组
可以使匹配器根据一个断言的结果, 或者之前的一个捕获子组是否匹配来条件式的匹配一个子组或者在两个可选子组中选择。 条件子组的两种语法如下:
(?(condition)yes-pattern) (?(condition)yes-pattern|no-pattern)
如果条件满足,使用 yes-pattern,其他情况使用 no-pattern(如果指定了)。 如果有超过 2 个的可选子组,会产生给一个编译期错误。
条件一共有两种。如果在(condition)的括号内是数字组成的文本, 条件在该数字代表的(之前的)子组得到匹配时满足(即使用 yes-pattern)。 考虑下面的模式, 为了使其易于阅读其中增加了一些空白字符(查看PCRE_EXTENDED 选项)并且将其分为三个部分: ( \( )? [^()]+ (?(1) \) )
模式的第一部分匹配一个可选的左括号,并且如果该字符出现, 设置其为第一个子组的捕获子串。第二部分匹配一个或多个非括号字符。 第三部分是一个条件子组,它会测试第一个子组是否匹配,如果匹配到了, 也就是说目标字符串以左括号开始,条件为TRUE, 那么使用 yes-pattern 也就是这里需要匹配一个右括号。其他情况下, 既然 no-pattern 没有出现,这个子组就不匹配任何东西。换句话说, 这个模式匹配一个没有括号的或者闭合括号包裹的字符序列。
如果条件式字符串 (R),它在得到对模式或子模式的递归调用时满足。 在”最上级”, 条件总是false。
如果条件不是数字序列或(R),它就必须是一个断言。这里的断言可以使任意的,积极, 消极,正向,后向都是可以的。考虑这个模式, 同样为了方便阅读, 增加了一些空白字符,并且在第二行有两个可选路径。
(?(?=[^a-z]*[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )
条件式一个正向积极断言,匹配一个可选的非小写字母字符序列紧接着一个小写字母。 换一种说法,它测试目标中至少出现一个小写字母,如果小写字母发现, 目标匹配第一个可选分支,其他情况下它匹配第二个分支。 这个模式匹配两种格式的字符串:dd-aaa-dd 或 dd-dd-dd。aaa 代表小写字母, dd 是数字。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。
