matches的使用
需求
把一个传到页面的文字里面的内容部分替换为链接,效果如下
解决
freemarker的matches
函数,首先先看下官方介绍
该内建函数决定了字符串是否精确匹配模式。而且,它会返回匹配子串的列表。 返回值是多类型值:
- 布尔值:如果字符串整体匹配了模式,就是
true
, 否则就是false
。比如:"fooo"?matches('fo*')
就是true
,但是"fooo bar"?matches('fo*')
是false
。 - 序列:字符串匹配的子串的列表。很有可能是长度为0的序列。
其实就是这个字符串只要符合你的正则表达式就会返回true
,否则返回false
。然后这个函数还可以和group一使用,只要你把要匹配的正则通过()
分开,然后就可以取到了。如下
<#assign str = "大声点123232大声点啊">
<#assign r = str?matches("(\\D*)(\\d*)(.*)")>
${r?string}
${r?groups[1]}
${r?groups[2]}
${r?groups[3]}
输出:
true
大声点
123232
大声点啊
这样就可以获得对应的正则表达式所对应的值了。