JSP标记间距正则表达式

时间:2014-01-17 17:50:27

标签: regex eclipse jsp

我们假设将所有应用程序从一种类型的服务器迁移到另一种类型的服务器。新服务器不接受在属性之间未插入空格的无效JSP标记。例如,以下内容。

<input type="text"name="myField" />

我们使用了以下正则表达式,但它似乎并不完美。

[\w.-]+[\s]*=[\s]*"[^"]+"[^\s/%>]

例如,它返回如下的字符串赋值。

span.style.fontWeight = "bold";

有人建议使用更好的正则表达式来查找无效的JSP代码吗?

更新

我是这个正则表达式使用Eclipse Search&gt;文件功能。

3 个答案:

答案 0 :(得分:0)

只需尝试此RegEx:(<.+?[^" ]+?="[^"]+?")([^ ]+?)(.+?>)。将找到"后面没有空格的所有“标签”。然后,您可以像这样替换捕获的组:$1 $2$3以添加空格。

答案 1 :(得分:0)

Tenub的答案几乎是正确的,但正如Rachel G.所说,当结束括号紧跟在正确的引号后面时,它会返回误报。

(&lt; [^?%]。+?[^“] +?=”[^“] +?”)([^ /&gt;] +?)([^>] *(?: ?/ | \ |%)GT)

应该给你你想要的结果。

免责声明:这不是严格的检查程序。您可以使用&lt; ...“asdf /&gt;这样的标记未被检测到,但由于标记的形成可能足以在旧系统下工作,因此这应该足够了。

答案 2 :(得分:0)

简单版本:

  • 查找: (=\s*"[^"]*")(\w)
  • 替换为: $1 $2

解释

find 正则表达式查找=后跟可选空白,然后是" ... ",紧接着是单个字母数字字符或下划线。 它被分成两个捕获组,在替换表达式中由$ 1和$ 2表示 - 在它们之间插入一个空格。

[次要问题:这对包含转义双引号的属性值不起作用。没有解决这个问题,因为假设它不太可能。但是,它有理由进行手动查找/替换,而不是“替换所有”以防万一。]