PCRE正则捕获?31至可选?xx标签间内容的实现方案
解决PCRE正则捕获
?31到下一个可选?xx标签间内容的问题 可以使用正向预查结合非贪婪匹配实现需求,对应的PCRE正则表达式为:
\?31(.*?)(?=\?\d{2}|$)
正则说明
\?31:匹配起始标签?31,用\转义问号避免被当作量词解析(.*?):非贪婪模式匹配任意字符,直到触发后续终止条件(?=\?\d{2}|$):正向预查,指定两种终止场景:\?\d{2}:下一个?后跟两位数字的标签$:字符串结尾(当没有后续?xx标签时)
测试验证
将该正则代入你的测试场景,结果如下:
| 输入 | 捕获组结果 | 状态 |
|---|---|---|
| xxx?31testing1?32testing2 | testing1 | OK |
| xxx?31testing1 testing2 | testing1 testing2 | OK |
完全覆盖两种需求场景:既有后续?xx标签时捕获中间内容,无后续标签时捕获?31之后的全部剩余内容。
内容的提问来源于stack exchange,提问作者smokey
相关产品推荐
相关产品推荐

