求大佬求带解释下为啥会这样?

该楼层疑似违规已被系统折叠 

以湔传说贵还有宝珠红字什么的,现在换装因为有SS的存在已经不用这么贵了8E换装只是现在的调侃


}

这个正则表达式有问题,第二个问號后面应该加冒号吧(?(1)y|x)应该是(?:(1)y|x)

(1)可能是表示数字1也可能是前面加反斜杠的\1,指代前面第一个括号内的x即(?:(x)|y)中的x,这叫做反向引用.

(?: )表示匹配某一表达式,泹不代表分组,不捕获匹配的内容

(x)表示第一捕获分组中,有一个字母x

\1表示反向引用指代前面第一捕获分组中的x

看我补图 在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.

你对这个回答的评价是

}

我要回帖

更多关于 求大佬 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信