今天准备用DW替换查找所有input文本框,于是开始写正则进行匹配。
先来看下以下2种情况有什么不同。
<input(.*+)value="(.*?)"([^>]*?)>
这里我们需要“懒惰”一下,即尽可能少的重复,找到即返回,不需要再继续匹配。
第1种方法是错的,调试多次都是匹配多数,即贪婪模式。从中不难看出,之所以会贪婪,是因为少了这个符号?
<input
(.*+)
value="(.*?)"([^>]*?)>
<input(.*?)value="(.*?)"([^>].?)>
换成第2种 懒惰模式即可。而后面的2个正则都是用了懒惰,所以不需要改。
再看这2个
<input
(.*?)
value="(.*?)"([^>].?)>
<input(.*?)value="(.*?)"([^>]
*?
)>
/> 或者 空格> (也就是尖括号>左边只会有1个字符匹配)
所以,其他的字符还是会保留,在替换时就被输出了。这并不是想要的结果
而星号"*"是
匹配前面的子表达式零次或多次任意,那么就会将多次出现的都匹配出来
class ="xxx" /> 或者 xx任意字符> (也就是尖括号>左边所有条件都会匹配在这个正则 ,本例中即$3)