我正在尝试搜索和替换HTML代码,以根据现有的name属性添加缺少的ID属性。在互联网上搜索,我已经成功地拼凑了以下内容:
搜索:
name=("(.*?)")
替换为:
id=$1 name=$1
通过将替换字符串中的$
更改为\
,这在Dreamweaver的搜索和替换或Notepad ++中非常有效。
我无法完成的是一点过滤。我想忽略已经有id属性的行,可能还有另外一个或两个条件。我们将为每个替换眼球,所以我拥有的是宜居的,但我真的很感激一些帮助,使它更有效。
答案 0 :(得分:0)
由于您必须只处理没有id属性的标记,因此需要确保从标记的开头到结尾不存在id属性。为此,您可以使用此搜索替换:
搜索:
(<\w+\s+(?:[^ni>]|\B[ni]|n(?!ame\s*=)|i(?!d\s*=))*)(name\s*=\s*("[^"]+")(?:[^i>]|\Bi|i(?!d\s*=))*>)
替换:$1id=$3 $2
我们的想法是使用字符类来禁止name或id属性以及标记的结尾,直到目标属性(对于第一个非捕获组)并且直到标记结束(对于第二个非捕获组)在目标属性之后。
注意:此模式根本不处理单引号或引号,但可以用name\s*=\s*("[^"]+")
替换name\s*=\s*["']?([^"'\s])["']?
。在这种情况下,替换模式变为$1id="$3" $2
。这是管理属性引用的基本方法,但它应该有效。
<强>词汇表:强>
(?:...)
非捕获组
\w
字符字符类:等同于[a-zA-Z0-9_]
(?!...)
否定前瞻:后面没有
\B
非字边界:来自\w
类的两个字符之间或两个不属于\w
类
<强> Demo 强>