2024-10-16 10:00:07
看我补图 在python idle中运行没有错误 匹配的字符串是 ‘xy’或者是‘yx’两个
这是Python2.4 以后的 re 模块,新加入的一个条件匹配功能
(?( id/name )yes-pattern|no-pattern) 判断指定组是否已匹配,执行相应的规则.
这个规则的含义是,如果 id/name 指定的组在前面匹配成功了,则执行 yes-pattern 的正则式,否则执行 no-pattern 的正则式。
也就是说如果匹配了x那么后面就匹配y,如果没有匹配成功x匹配了y,那么后面就匹配x
也就是说?:(x)这个片段 虽然不保存分组 依然可以用1引用是吧 引用的时候不应该用'\1'吗?
还有就是(lala(aa))这种表达式 引用的数字是从里面往外计数的吗?
(?:(x)|y)中的(?: )不保存分组,但是(x)是第一捕获分组,所以后面用?(1)引用(x)的分组,如果(x)成功匹配,则后面匹配y,如果(x)没有成功匹配匹配了y,则后面匹配x.
这是一个新的条件匹配功能,完整的公式(?(1)y|x),如果匹配第一分组数据,就执行y,否则执行x.这里这个条件分组前面不加反斜杠.
(lala(aa))引用的数字是从左向右计数,这里最外面是\1,里面的是\2.