问题描述
当前,我需要在下面的第三列应用转换:
ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201
我需要将"010201"
转换为"01/02/01"
。
所以首先我需要:
- 修剪所有结尾的
0
个字符 - 将两个数字一分为二,并添加
"/"
个字符。
此转换的上下文位于solr data import handler transformers内部,但内部使用java regex库。
反正有得到那个吗?
我尝试使用此正则表达式:
当前,我需要在下面的第三列应用转换:
ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201
我需要将"010201"
转换为"01/02/01"
。
所以首先我需要:
- 修剪所有结尾的
0
个字符 - 将两个数字一分为二,并添加
"/"
个字符。
此转换的上下文位于solr data import handler transformers内部,但内部使用java regex库。
反正有得到那个吗?
(\d[1-9]{1})
它标志着我
01/04/01/
并且需要:
01/04/01
替换表达式为:
$&/
有什么想法吗?
解决方法
您可以使用
\d{2}(?=(?:\d{2})+$)
替换为$0/
,请参见regex demo。
详细信息
-
\d{2}
-两位数字 -
(?=(?:\d{2})+$)
-一个正向的超前查询,可确保在字符串末尾出现一个或多个两位数。
替换中的$0
代表整个比赛。
在RegExTransformer
代码中,使用
<field column="colname" regex="\d{2}(?=(?:\d{2})+$)" replaceWith="$0/" />