例如字符串abc1abc_ab_abc2abc, 第一次将会匹配出abc1abc, 而不是abc1abc_ab_abc, 也不是abc1abc_ab_abc2abc, 第二次就会匹配出abc2abc, 但是如何构造正则表达式呢? 请求各位帮忙~

解决方案 »

  1.   

    自己的匹配

        匹配出全部abc----abc;
        然后自己比较  返回最小的那个
      

  2.   

    jimshen(jimshen),  谢了, 能告诉我 .*  ,  .*?  和 .*+ 的区别么?
      

  3.   

    *表示匹配0个或多个字符,是贪婪的(Greedy),即尽可能多地匹配字符,.*表示尽可能多地匹配非\r\n的字符*?称为是懒惰的星号,即尽可能少地匹配字符,马上会去检测后面的字符是否满足.*?后的模式,如果不满足,则回溯;一旦后面的字符串满足模式abc,则马上停止了*+不知道,倒是有 + 和 +?。+表示匹配1个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯
      

  4.   

    我也不懂正则表达,如果哪位高手有资料发于我邮箱..谢谢!!
    [email protected]
      

  5.   

    *表示匹配0个或多个字符,是贪婪的(Greedy),即尽可能多地匹配字符,.*表示尽可能多地匹配非\r\n的字符*?称为是懒惰的星号,即尽可能少地匹配字符,马上会去检测后面的字符是否满足.*?后的模式,如果不满足,则回溯;一旦后面的字符串满足模式abc,则马上停止了*+不知道,倒是有 + 和 +?。+表示匹配1个或多个字符,是贪婪的;+?是懒惰的,在匹配一个字符之后会去检测后面的字符是否满足.+?后的模式,如果不满足,则回溯学习了~~~
      

  6.   

    在谢了, jimshen(jimshen) , 总算有点了解了, 原来我昨晚一直搞的是贪婪的匹配, 难怪匹配不对, 不对我现在又面临新的问题, 头痛啊, 请问如何构造:
    行的开头符或空白符或'<' + 零次或多次空白符 + "abc" + 零次或多次空白符 + 行结尾符或空白符或'>'
    我的构造是这样: "\\s|^|<\\s*?abc\\s*?\\s|$|>" , 不对么?
    求解~~
      

  7.   

    上面的整行匹配的。在整行和不是整行匹配的时候有点差别,自己试一下\s*<?\s*abc\s*(>|\r|\s){1}