正则表达式替换spring:消息标签与th:文本等效

时间:2017-10-04 07:04:06

标签: java regex eclipse thymeleaf

使用Eclipse搜索功能CTRL-H,可以用什么样的正则表达式来替换所有出现的<spring:message />标签,如:

<label>
    <spring:message code="name" />
</label>
<h1><spring:message code="title" /></h1>

使用:

<label th:text="#{name}"></label>
<h1 th:text="#{title}"></h1>

修改

如果正则表达式也会处理替换:

,那就太好了
<label class="lalala"><spring:message code="name" /></label>

2 个答案:

答案 0 :(得分:3)

你可以使用这个通用的:

<([^>]+)>\s*<\s*spring:message\s+code="([^"]*)"[^<]+<\/\1>

并替换为:

<\1 th:text="#\{\2\}"><\/\1>

Regex Demo

您可能必须像这样逃离IDE的backslaseh:

正则表达式:

(?s)<([^>]+)>\\s*<\\s*spring:message\\s+code=\"([^\"]*)\"[^<]+<\\/\\1>

subst

<\\1 th:text=\"#\\{\\2\\}\"><\\/\\1>

答案 1 :(得分:2)

这应该有效

(?s)<label>[^<]*<spring:message code="([^"]*)" */>[^<]*</label>

- &GT;

<label th:text="#{$1}"></label>

<h1><spring:message code="([^"]*)" /></h1>

- &GT;

<h1 th:text="#{$1}"></h1>

((?s)允许多行匹配:multiline search replace with regexp in eclipse