如何从 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][^-]*).*", ""))
我有一个像 '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-9][^-]*)
- 第 1 组:一个数字,然后是 -
.*
- 字符串的其余部分(没有换行符,如果有换行符,在^
之前添加(?s)
)像使用它
#set ($val1= $String.replaceFirst("^[^0-9-]*([0-9][^-]*).*", ""))