如何在正则表达式中使用 fn:replace(string, pattern, replace)?

4
我希望使用 replace 函数在字符串中查找 '[' 和 ']' 并用空格替换它们。
我尝试了以下代码:
${fn:replace('[aus,zar]','(\[|\])','')}

但是我的系统抛出了一个异常。

fn:replace() 不使用基于正则表达式的替换。请参考此答案。使用.replaceAll("[\\]\\[]+", "") - Wiktor Stribiżew
1
如果你只需要处理这两个 [] 字符,你可以尝试使用 ${fn:replace(fn:replace('[aus,zar]', ']', ''), '[', '')} - Wiktor Stribiżew
似乎这个方法并不起作用,它又抛出了一个异常。 - Bevin
接下来,你可以实现一个自定义 EL 函数,它将委托给基于正则表达式的 String#replaceAll() 方法,具体步骤请参考这个答案 - Wiktor Stribiżew
1个回答

0
在正则表达式(regex)中,“[”和“]”具有不同的含义,它们被用作字符类。如果你想匹配它们,你需要通过添加反斜杠“\”进行转义。 另外,竖线“|”字符被用来指定正则表达式中的“或”关系,因此它也需要进行转义。 请参考下面给出的代码。
${fn:replace('[aus,zar]', '\\[|\\]', '')}

这可能解决问题,如果不行,请在评论中说明问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接