(?=xx)abc)
不能这样写  (?<=xx)abc)

解决方案 »

  1.   

    (?<=2000)xp(?=window)
    就能匹配 xp
      

  2.   

    因为(?=xx)abc) 搜索到 xxabc 如果判断?
      

  3.   

    但是
    (?=2000xp)(\d+)
    会匹配 2000
      

  4.   

    (?=2000xp)这就代表一个缝隙
    然后 捕获到了 2000xp 然后\d+把2000保存成了结果
      

  5.   

    Windows (?=NT|XP)(NT)
    就能 匹配 Windows NT
      

  6.   

    LZ 理解了  (?=)是不占位置的 
    正向搜索到了 NT以后然后如果再有NT就匹配下一个 (NT)就是 windows NT
      

  7.   

    2000(?=xp)window
    永远都匹配不到 
    因为 xp不可能 =window
    xp 就当不存在 但是 匹配项需要xp
    如果是 2000(?=xp)(x)
    就能匹配到了 2000x
      

  8.   


    第一次匹配:\w和第1个A匹配,最后一个\1和第二个A匹配,
    此时引擎必须从第三个A开始匹配了,看第三个A后面是不是有三个连续的A,结果只有两个,你的意思是此时,\w匹配了第三个A对吗?
    那上不可能的,因为你看到最后那个加号了吧,被匹配的字符串必须是四个连续的\w才可以,第三个A后面只有两个,一共才三个连续的啊?
      

  9.   

    由于+对应贪婪匹配,所以\w匹配第一个A((?=\1\1\1)\1)+  匹配 第二和第三个A
    分析如下:
    引擎处于第一个A之后,看到后面有三个A,(?=\1\1\1)满足,((?=\1\1\1)\1)+成功匹配第二个A
    由于+对应贪婪匹配,引擎将继续用((?=\1\1\1)\1)+匹配字符串,这样得到第三个A,最后匹配失败,
    因此((?=\1\1\1)\1)+ 匹配 第二和第三个A最后 /(\w)((?=\1\1\1)\1)+/ 匹配 "AAAAA" 中的前三个A可以推断,/(\w)((?=\1\1\1)\1)+/ 匹配 A^n (n>3) 中的前 n-2 个A