如何从 Velocity 模板中的字符串中提取字母和数字序列?

How to extract letter and number sequences from a string in Velocity Template?

我有一个像 'LL101-D10' 这样的字符串。我想从 Velocity 中的第一个数字开始提取连字符之前的字符串。

例如 - "LL101-D10" , LLL101DL-D10
输出 - 101 , 101DL

要在连字符之前提取字符串,我做了如下操作-

#set ($index = $String.indexOf('-'))
#set ($val1= $String.substring(0, $index))

但是我如何提取 Velocity 中的其他部分?任何帮助将不胜感激。

您可以使用以下正则表达式进行替换操作:

^[^0-9-]*([0-9][^-]*).*

并替换为 </code> 占位符,指的是第 1 组中捕获的内容。</p> <p>见<a href="https://regex101.com/r/68551j/1" rel="nofollow noreferrer">regex demo</a></p> <p><strong>详情</strong></p> <ul> <li><code>^ - 字符串开头

  • [^0-9-]* - 除数字和 -
  • 以外的 0+ 个字符
  • ([0-9][^-]*) - 第 1 组:一个数字,然后是 -
  • 以外的 0 个或多个字符
  • .* - 字符串的其余部分(没有换行符,如果有换行符,在^之前添加(?s)
  • 像使用它

    #set ($val1= $String.replaceFirst("^[^0-9-]*([0-9][^-]*).*", ""))