正则式:a(.|\n)*?c
匹配内容:
ab
a
b
d
abc结果:
ab
a
b
d
abclazy方式,为什么没有匹配abc?也就是说这里的\n并没有lazy, 难道是正则的BUG吗?

解决方案 »

  1.   

    你这样不用lazy, 匹配的是什么?
    a
    b
    d
    abc我为什么要lazy, 是想 \n 最少化, 最好是0次匹配.
      

  2.   

    ab
    a
    b
    d
    abc
    abc
    abc
    abc
    匹配成
    ab
    a
    b
    d
    abc叫lazy如果你相匹配abc 得用反相查找:(?<...)
    或者用: a[^a]*c仅是个人理解而已,说错别怪
      

  3.   

    先用:
    a.*?c
    匹配,在单行中查找. 如果找不到,再用:
    a(.|\n)*?c
    在多行中查找.不用(.|\n),也可以用SingleLine选项.这是我想要的效果, 不能用一个正则式表示吗?
      

  4.   


    你如果用正则:a[^a]*c
      "ababdbcabc"
    可以先匹配到两个abcbc abc 的数组(绝对不会匹配到ababdbc)然后你再从数组中选出你想要的结果,当然是选择象你说的无"/n"的优先.然后"/n"最少的.这样不就行了?