php 正则 预搜索,DEELX - Regexp - 正则表达式扩展语法 - 预搜索(零宽度断言)

本文介绍了DEELX正则表达式中的预搜索和反向搜索功能,包括正向预搜索(?=xxx)、否定正向预搜索(?!xxx)、反向预搜索(?<=xxx)及其区别。DEELX在处理这两种搜索时的独特之处和与其他引擎如Perl、Java和GRETA的对比。特别强调了DEELX中反向预搜索的RIGHTTOLEFT模式使其逻辑与正向搜索一致,但方向相反,且没有长度限制。
摘要由CSDN通过智能技术生成

DEELX 正则表达式扩展语法:预搜索

回到:目录 | 上一页:非捕获分组 | 下一页:独立表达式

预搜索(令宽度断言)

判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。

说明

预搜索有向前和向后两种:

表达式

方向

说明

(?=xxx)

正向预搜索(向右)

正向预搜索,判断当前位置右侧是否能匹配指定表达式

(?!xxx)

正向预搜索否定,判断当前位置右侧是否不能够匹配指定表达式

(?<=xxx)

反向预搜索(向左)

反向预搜索,判断当前位置左侧是否能够匹配指定表达式

(?

反向预搜索否定,判断当前位置左侧是否不能够匹配指定表达式

在 DEELX 中,不管整个表达式是“普通模式”还是“从右向左”模式,正向预搜索内部的表达式,始终采用“普通模式(从左向右)”模式,反向预搜索内部的表达式,始终采用“从右向左”模式。

“正向预搜索”在各个引擎中的表现基本一致。

关于“反向预搜索”中包含的表达式,Perl, Java, GRETA 以及 DEELX 的细节都不相同:

引擎

说明

举例

Perl

只能使用固定长度的反向预搜索。

(?<=\t)print

Java

允许使用不定长度的反向预搜索,但必须要有最大长度。

(?<=\{\s{0,100})print

GRETA

允许使用没有长度限制,但否定格式存在一些问题。

(?<=\{\s*)print

DEELX 中的反向预搜索:

DEELX 采用 RIGHTTOLEFT 模式来匹配“反向预搜索”中的表达式。使反向预搜索与正向预搜索在逻辑上完全相同,而方向相反。因此,在 DEELX 中,反向预搜索与正向预搜索一样,没有长度限制。

比如,在 DEELX 引擎中:

文本

表达式

匹配结果

{print}

(?

匹配失败

(?<=\{\s*)print

匹配成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值