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
    字符
  • 将每2个数字拆分并添加
    “/”
    字符
  • 此转换的上下文在内部,但它在内部使用java正则表达式库

    有什么办法可以得到这个吗

    (\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
    字符
  • 将每2个数字拆分并添加
    “/”
    字符
  • 此转换的上下文在内部,但它在内部使用java正则表达式库

    有什么办法可以得到这个吗

    (\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吗?上述正则表达式是否最终会产生预期的输出?是不是