Regex 用正则表达式替换netbeans中的

Regex 用正则表达式替换netbeans中的,regex,netbeans,replace,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

我不太擅长正则表达式。我试图将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; ">
^
但这没用


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

使用正则表达式来解析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等来指代第一组


如果使用“^”和$

请记住关于多行标志,只有当行没有前面的空格时,表达式才起作用。 请改用此表达式:

^[ \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; ">
^[\t]?
[编辑]
如果表达式前面有文本,则需要删除开头的插入符号(^)。

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


如果您的目标标记可以在文档中的任何位置找到,并且您的正则表达式没有机会匹配您想要保留的任何内容,那么请去掉
^
边界匹配器,然后在使用“替换”或“全部替换”之前使用“查找”进行测试,以确定它是否有效。

我找到了解决方案

我试过这个,效果很好

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

在我的例子中,它可以用来代替“canvas”的任何html标记。

这些标记是否总是在一行的开头,没有前面的空格?它们并不总是在一行的开头。在一些地方,他们在其他地方,他们在中间。