+是重复一次或多次,而问是重复0次事1次,我就不懂了,即然用了+,为何还要用?呢?还有那个括号到底是有什么用呢?我把括号取了,好像得到的结果也一样

解决方案 »

  1.   

    ?表示最小匹配,比如按照你上面的表达式对于下记内容:
    <abc>1234</abc><bcd>hahah</bcd>
    第一次匹配的结果就是:abc
    如果去掉?,匹配的结果就是:abc>1234</abc><bcd>hahah</bcd()表示匹配的范围。?的作用在于这个括号内。
      

  2.   

    因为 正则表达式是贪婪的 尽可能多的匹配字符
    而 . 代表着非换行符的所有字符 
    如 <td width="20px"><input type ="button" name="btnName" id="btnName" value=""/></td>
    这样的话 我们用<.+>  因为 > 也属于 . 的范畴 
    所以会将<td width="20px"><input type ="button" name="btnName" id="btnName" value=""/></td> 全部取到
    如果我们要取 <td width="20px"> 显然结果是不对的
    这样就要将正则的贪婪性德转变成懒惰的 关键字符就是 ?
    ? 可用于表示重复的 +  *  ? 之后 使得正则表达式 变成懒惰的 只要有匹配就会返回结果 
    这样 <.+?> 就会将<td width="20px"> 取到