首先:\b\w+(?=ing)
 由于有正预测先行断言,不包括自身在内。
所以在 例如  aaaaingbbbbb  cccccing 中匹配的是
 aaaa 和 ccccc 部分。
如果把正则变成 \b\w+(?=ing)\w+\b 的话
在   aaaaingbbbbb  cccccing 中匹配的是什么呢?
小子是这么理解的,求各位大神指教。
首先  \b\w+ 说的是以任意字符开头,但是必须有东西开头
        (?=ing) 说的是 有 ing 。但匹配的东西不能包含ing
        \w+\b  说的是必须有字符结尾。
所以,小子觉得,在以上字符串中, 此正则应该匹配的是: aaaabbbbb 和 ccccc 。
但是事实匹配的是:aaaaingbbbbb  cccccing  。
求真相,求指教。

解决方案 »

  1.   

    1.正则是匹配,它不会替换掉你匹配的东西,如aaaabbbbb在原字符串中是不存在的,怎么会有这样的结果
    2.(?=ing) 意思是以当前字符开始为ing的字符串,但不参与匹配结果(预测,就是告诉你这个地方应该是ing),而不是匹配的东西不能包含ing
      

  2.   

    \b\w+(?=ing)\w+\b
    你这么写的可以理解为
    \b\w+ing\w+\b
      

  3.   


    应该是等效于
    \b\w+ing\w*\b
      

  4.   

    匹配的是:aaaaingbbbbb cccccing 因为 ing,不是匹配结果中的一部分,后边的正则会回退到ING 前面继续匹配