提取第二个下划线和第三个下划线或空格之间的单词

Ame*_*yst 0 regex

我想提取第二个和第三个下划线(_)或第二个下划线和空格之间的词。

我的样本数据将是:

COL_POS_CJMA_CA_03.09.17
COL_DPU_CJER_CK_03.08.17
COL_POS_CJNE CA_03.09.2017
COL_DPU_CJEK CK_03.08.2017
Run Code Online (Sandbox Code Playgroud)

我的结果应该是:

CJMA
CJER
CJNE
CJEK
Run Code Online (Sandbox Code Playgroud)

我已经有了_[^_]*_([^_]*)_ ,我可以提取第一个两个结果。如果有人可以帮助我提取第三和第四结果

在第三个下划线或空格之间显示的正则表达式

Jan*_*Jan 5

你可以去

^(?:[^_]+_){2}([^_ ]+)
Run Code Online (Sandbox Code Playgroud)

参见regex101.com上的演示


分解后,它说:

^         # beginning of string
(?:       # non-capturing group
    [^_]+ # not _, at least once
    _     # _
){2}      # repeat the group twice
([^_ ]+)  # capture characters not _ or spaces to group 1
Run Code Online (Sandbox Code Playgroud)

...,或除以_结果并将其分析为数组,即result[2]