正则表达式分析匹配input文本框

今天准备用DW替换查找所有input文本框,于是开始写正则进行匹配。

先来看下以下2种情况有什么不同。

<input(.*+)value="(.*?)"([^>]*?)>

<input(.*?)value="(.*?)"([^>].?)>


其实这里已经用到了正则表达式的“ 正则懒惰与贪婪模式”,了解这2种用法就比较方便了。

这里我们需要“懒惰”一下,即尽可能少的重复,找到即返回,不需要再继续匹配。
第1种方法是错的,调试多次都是匹配多数,即贪婪模式。从中不难看出,之所以会贪婪,是因为少了这个符号?
<input (.*+) value="(.*?)"([^>]*?)>
<input(.*?)value="(.*?)"([^>].?)>

换成第2种  懒惰模式即可。而后面的2个正则都是用了懒惰,所以不需要改。


再看这2个
<input (.*?) value="(.*?)"([^>].?)>
<input(.*?)value="(.*?)"([^>] *? )>

由于 点号“.”是匹配单个字符,再加上懒惰符问题“?”,匹配1次或多次,即这段内容只会匹配这样的结果
/>   或者  空格>   (也就是尖括号>左边只会有1个字符匹配)
所以,其他的字符还是会保留,在替换时就被输出了。这并不是想要的结果
而星号"*"是 匹配前面的子表达式零次或多次任意,那么就会将多次出现的都匹配出来
class ="xxx" />   或者  xx任意字符>   (也就是尖括号>左边所有条件都会匹配在这个正则 ,本例中即$3)

我们要获取的是第2个正则的内容,即$2,所以正确的用法是以下
用DW替换的话就是这样
上面框:

<input(.*?)value="(.*?)"([^>]*?)>

下面框:

$2

//只需要保留第2个正则内容,则只写出$2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值