Java solr-DIH:RegExTransformer
目前,我需要在下面的第三列应用一个转换:Java solr-DIH:RegExTransformer,java,regex,solr,regex-lookarounds,dataimporthandler,Java,Regex,Solr,Regex Lookarounds,Dataimporthandler,目前,我需要在下面的第三列应用一个转换: ACAC | 0 | 01 ACAC | 0 | 0101 ACAC | 0 | 0102 ACAC | 0 | 010201 ACAC | 0 | 01 ACAC | 0 | 0101 ACAC | 0 | 0102 ACAC | 0 | 010201 我需要将“010201”转换为“01/02/01” 因此,首先我需要: 修剪所有结尾0字符 将每2个数字拆分并添加“/”字符 此转换的上下文在内部,但它在内部使用java正则表达式库 有什么办法可以
ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201
ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201
我需要将“010201”
转换为“01/02/01”
因此,首先我需要:
0
字符“/”
字符(\d[1-9]{1})
我试过使用这个正则表达式:
目前,我需要在下面的第三列应用一个转换:
ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201
ACAC | 0 | 01
ACAC | 0 | 0101
ACAC | 0 | 0102
ACAC | 0 | 010201
我需要将“010201”
转换为“01/02/01”
因此,首先我需要:
0
字符“/”
字符(\d[1-9]{1})
它象征着我:
01/04/01/
需要:
01/04/01
替换表达式为:
$&/
有什么想法吗?你可以用
\d{2}(?=(?:\d{2})+$)
替换为$0/
,请参阅
详细信息
-两位数字\d{2}
-一种积极的前瞻,确保在字符串末尾出现一个或多个双位数(?=(?:\d{2})+$)
$0
代表整个比赛
在代码中,使用
很好,所以您有了一些工作。尝试(\d{2})(\d{2})(\d{2})\d*$
并替换为$1/$2/$3
。我很好奇为什么您使用$&
,在Java中,$0
用于替换为整个匹配项。根据文档,
组号不固定为3。我的意思是,我需要捕捉0[1-9]组的所有对,抛出所有结尾为“0”。。。我的意思是,010101040000
->01/01/01/04
。。。或者010100000000
->01/01
…如果你是这个意思,你需要一个条件替换模式,而Java的正则表达式引擎不支持。你能删除问题输入末尾的0吗?上述正则表达式是否最终会产生预期的输出?是不是
,