用正则表达式替换netbeans

时间:2012-08-01 07:31:38

标签: regex netbeans replace

我不太擅长正则表达。我试图用Netbeans中的文本替换大型HTML文档。有几个这样的标签:

<canvas width="62" height="23" style="width: 62px; height: 23px; top: 1px; left: 1px; ">

<canvas width="62" height="23" style="width: 62px; height: 23px; top: 1px; left: 1px; ">

<canvas width="67" height="23" style="width: 67px; height: 23px; top: 1px; left: 1px; ">

我想用空格或空值替换这些标记以删除它们。

我试过

^<canvas width="[0-9]*" height="[0-9]*" style="width: [0-9]*px; height: [0-9]*px; top: [0-9]*px; left: [0-9]*px; ">

但它没有帮助。

有人能给我一个解决方案吗?

4 个答案:

答案 0 :(得分:8)

使用正则表达式解析html是个坏主意,但如果你必须...

尝试使用正则表达式组:

^<canvas width="([0-9]*)" height="([0-9]*)" style="width: ([0-9]*px); height: ([0-9]*px); top: ([0-9]*px); left: ([0-9]*px); ">$

所以你可以用$ 1等来引用第一组。

如果您使用^和$

,请记住多行标记

答案 1 :(得分:0)

只有当行没有前面的空格时,表达式才有效。 请改用此表达式:

^[ \t]?<canvas width="[0-9]*" height="[0-9]*" style="width: [0-9]*px; height: [0-9]*px; top: [0-9]*px; left: [0-9]*px; ">

[编辑] 如果表达式前面有文本,则需要在开头删除插入符号(^)。

答案 2 :(得分:0)

我认为你的正则表达式看起来很好,除了行首边界匹配器^,它强制搜索从行的开头开始。因此,如果您的目标标记没有开始一行,匹配器将找不到它们。

如果您的目标标记可以在文档中的任何位置找到,并且您的正则表达式无法匹配您想要保留的任何内容,请删除^边界匹配器,然后测试以查看它是否正常工作在使用“替换”或“全部替换”之前使用“查找”。

答案 3 :(得分:0)

我找到了解决方案。

我试过这个并且它工作正常。

<canvas (?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>

它可以用于任何html标签代替&#34; canvas&#34;就我而言。