我想使用正则表达式来转换这些:
<input type="text" name="salutation" value={salutation} />
<input type="text" name="first_name" value={first_name} />
进入这些:
<input type="text" name="salutation" value="" />
<input type="text" name="first_name" value="" />
所以在 VIM 中,我尝试了以下所有命令:
:0,$s/value={.+}/value=""/gc
:0,$s/value={(.)+}/value=""/gc
:0,$s/value={[a-zA-Z0-9_\.]+}/value=""/gc
:0,$s/value={[^}]+}/value=""/gc
但是我不断收到消息 Pattern not found。我做错了什么?
在替换中使用特殊字符时,需要对一些量词进行转义。
这包括
+
,因此您应该键入\+
。请参阅:4.3 量词,贪婪和非贪婪。
你的正则表达式实际上是这样做的:
:0,$s/value={.+}/value=""/gc
=将字符串“ {.+} ”重新设置为 value="":0,$s/value={(.)+}/value=""/gc
= 将字符串“ {(.)+} ”重新设置为 value="":0,$s/value={[a-zA-Z0-9_\.]+}/value=""/gc
= Reaplce string " {X+} " with value="" where X is a any of the charachter range inside []:0,$s/value={[^}]+}/value=""/gc
= Reaplce string " {X+} " with value="" where X is not the charachter '}'因此,如果您打算使用“+”作为量词,您应该使用“\+”。否则,就像在您的所有模式中一样,搜索实际的“+”而不是前面的 1 个或多个字符