sol DIH:RegExTransformer

问题描述

当前,我需要在下面的第三列应用转换:

ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201

我需要将"010201"转换为"01/02/01"

所以首先我需要:

  1. 修剪所有结尾的0个字符
  2. 将两个数字一分为二,并添加"/"个字符。

此转换的上下文位于solr data import handler transformers内部,但内部使用java regex库。

反正有得到那个吗?

我尝试使用此正则表达式:

当前,我需要在下面的第三列应用转换:

ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201

我需要将"010201"转换为"01/02/01"

所以首先我需要:

  1. 修剪所有结尾的0个字符
  2. 将两个数字一分为二,并添加"/"个字符。

此转换的上下文位于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/" />