(\w)\1{4,}和(\w){4,}\1和(\w)\1{4,}\1的困惑,请大家帮下

(\w)\1{4,}和(\w){4,}\1和(\w)\1{4,}\1的困惑,请大家帮下

(\w)\1{4,}和(\w){4,}\1和(\w)\1{4,}\1的困惑


" 反向引用 \1, \2...
    表达式在匹配时,表达式引擎会将小括号 "( )" 包含的表达式所匹配到的字符串记录下来。在获取匹配结果的时候,小括号包含的表达式所匹配到的字符串可以单独获取。这一点,在前面的举例中,已经多次展示了。在实际应用场合中,当用某种边界来查找,而所要获取的内容又不包含边界时,必须使用小括号来指定所要的范围。比如前面的 " <td >(.*?) </td >"。

    其实,"小括号包含的表达式所匹配到的字符串" 不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。表达式后边的部分,可以引用前面 "括号内的子匹配已经匹配到的字符串"。引用方法是 "\" 加上一个数字。"\1" 引用第1对括号内匹配到的字符串,"\2" 引用第2对括号内匹配到的字符串……以此类推,如果一对括号内包含另一对括号,则外层的括号先排序号。换句话说,哪一对的左括号 "(" 在前,那这一对就先排序号。
"-----------自己这段话理解的不是很好,所以下面的例子就更晕

(\w)\1{4,}和(\w){4,}\1和(\w)\1{4,}\1" 在匹配 "aa bbbb abcdefg ccccc 111121111 999999999" 时的困惑
(\w)\1{4,}匹配 ccccc 999999999
(\w){4,}\1匹配 ccccc 111121111 999999999
(\w)\1{4,}\1匹配 999999999
到底\1做了什么呀? 反向引用 \1, \2...那段话真是理解的不是很好。。。
可否说下呢?谢谢了
(\w)\1{4,}匹配 ccccc 999999999
(\w){4,}\1匹配 ccccc 111121111 999999999
(\w)\1{4,}\1匹配 999999999
youngord(621852223) 22:16:20
那\1位置不同,差异那么大呀
请大家帮下忙,谢谢了
当小括号中的内容已确定, \1也就确定了

先解释例子, 或许会更容易明白.

############################################################

(\w)\1{4,}匹配 ccccc 999999999

(\w)匹配第一个c
\1表示匹配(\w)匹配到的内容, 即c
\1{4,}结合在一起, 匹配至少4个c, 此处即cccc

(\w)匹配第一个9
\1表示匹配(\w)匹配到的内容, 即9
\1{4,}结合在一起, 匹配至少4个9, 此处即剩下的8个9

----------------------------------------------------------
(\w){4,}\1匹配 ccccc 111121111 999999999

(\w){4,}匹配cccc
\1匹配(\w)匹配到的c

(\w){4,}匹配11112111
\1匹配(\w)匹配到的1

(\w){4,}匹配99999999
\1匹配(\w)匹配到的9

-----------------------------------------------------------
(\w)\1{4,}\1匹配 999999999

(\w)匹配第一个9
\1{4,}匹配中间7个9: 9999999
最后的\1匹配最后一个9

############################################################

小括号嵌套时, 如((A)(B))
((A)(B))是\1, (A)是\2, (B)是\3


最后:
\1是正则式标准语法
在Perl中推荐用$1取代\1, 效果一样.
非常感谢,讲的不错,学习了