是否有正则表达式来替换字符串的外部同时保留内部?
前:
${person.dog.name}
后:
<c:out value="${person.dog.name}"/>
我需要在 Eclipse 编辑器中使用它,并且内部会发生变化。
这也很有用:
搜索:\$\{(.*?)\}
代替:\$\{fn:escapeXml\($1\)\}
${person.dog.name}
变得
${fn:escapeXml(person.dog.name)}
查找表达式:
(\$\{[^\}]+\})
和替换表达式将是:
<c:out value="$1"/>
在 Eclipse 编辑器中${person.dog.name}
查找!<c:out value="${person.dog.name}"/>
编辑:
使用时要小心,因为<c:if test="${foo}">
最终会像<c:if test="<c:out value="${foo}" />">
只需捕获整个字符串,^(.*)$
然后在替换函数中使用使用反向引用<c:out value="$1"/>
,例如$1
反向引用
string.replaceAll("^(.*)$", "<c:out value=\"$1\"/>")
在 Eclipse 中查看链接。你会放入^(.*)$
,find
替换<c:out value="$1"/>
。选择正则表达式,点击查找和替换。
如果您希望在一些较大的文本中捕获所有${foo}
内容,<c:out value="${foo}"/>?
那么您必须使用正则表达式([$]{foo})
来查找所有所需的文本,然后<c:out value=\"$1\"/>
在替换字段中使用。