[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 15# qixiaobin0715


    差不多是这个意思,断言,说成切断要准确些,把group(0)和group(1)从中切断,零宽的部分也就是group(0),为0,就是None,也就丢弃了

TOP

回复 16# wxyz0001
group(0)我不知应当叫做什么,姑且起名为全部匹配,应当整个表达式匹配的内容吧。比如说,用([a-z]+)-([0-9]+)-([A-Z]+)匹配good-147-BAD,对应关系应当是:
group(1)——good
group(2)——147
group(3)——BAD
group(0)——good-147-BAD

TOP

先行断言、后发断言、零宽断言、环视、预查等等,这些高大上的命名很容易把人搞蒙。
我认为只需要弄明白它的匹配原理,就不需要理会它是啥名字了。
所谓的零宽度断言,无非就是匹配符合条件的位置,而不是匹配字符,所以不会把它放到匹配组里面。

用 (?<=a)b 匹配字符串 ab
就是匹配 b 前面、a 后面的一个位置。

TOP

(?<=a)b,是匹配前面是a的b字符,得到匹配的只是b;b前面为a,是得到匹配的前提条件。

TOP

本帖最后由 WHY 于 2021-5-27 21:15 编辑

假设字符串为 ab,作为对比:
(?<=a)b
(?<=a) 匹配 b 前面、a 后面的一个位置,这个位置类似于 \b、^、$这种锚点。把锚点存储在匹配组里显然没有意义。
匹配结果:b

(?:a)b
(?:a)匹配字符a,但匹配的字符 a 不会存储在匹配组Group[1]里面。
匹配结果:ab

(a)b
(a)匹配字符a,匹配的字符 a 存储在匹配组Group[1]中。
匹配结果:ab

TOP

返回列表