论坛首页 编程语言技术论坛

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

浏览 3038 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-02  
PHP
(\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位置不同,差异那么大呀
   发表时间:2007-10-03  
(\w)\1{4,} 匹配5个及5个以上由相同字符组成的字符串
(\w){4,}\1 匹配首字符与尾字符相同的长度不小于5的字符串
(\w)\1{4,}\1 与(\w)\1{5,}等价
0 请登录后投票
   发表时间:2007-10-10  
按照标准的正则表达式中的描述:
\< \>:匹配词(word)的开始(\<)和结束(\>)。例如正则表达式\<the能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。
\( \):将 \( 和 \) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。
\{i\} , \{i,j\}:匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]\{3\} 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]\{4,6\} 匹配连续的任意4个、5个或者6个数字字符。注意:这个元字符不是所有的软件都支持的。

一般其他语言实现的正则表达式都差不多,可能会有一些不支持的情况。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics