如何在Freemarker中使用正则表达式(\ b,\ w)?

Non*_*ome 1 regex freemarker

${str?replace("\d+", "", "r")};
Run Code Online (Sandbox Code Playgroud)

我想用来\d删除数字,但它不起作用!

但是${str?replace("[0-9]", "", "r")};工作!!!

所以,我想知道如何使用正则表达式像\d,\b,\w,等?

Tim*_*ker 7

你需要加倍反斜杠:

${str?replace("\\d+", "", "r")};
Run Code Online (Sandbox Code Playgroud)

这是因为在正则表达式转义规则之前应用了字符串转义规则.所以字符串"\\d"被转换为正则表达式\d,然后匹配一个数字.

如果你的字符串是"\d",字符串处理器将它转换为文字d(因为\d它不是一个可识别的字符串转义序列,所以它被忽略).

  • `"\\ d +"`可以写成`r"\ d +"`,其中`r`代表"raw",而不是regexp.在原始字符串中,反斜杠并不特殊,这使得它们适用于正则表达式. (2认同)