这是我的数据
ABCD01MAH_processor_B_stats_qwer_20181105T105946Z.csv ABCD01MAH_processor_B_stats_qwer_20181106T105945Z.csv EFGHIJ01MAH_processor_A_stats_qwer_20181105T105945Z.csv EFGHIJ01MAH_wer_105_p
我想挑出所有东西,直到第一个underscore
我该怎么做?
这是我的尝试,使用先行条件(?(?=...)yes|no)
,但直到最后一个underscore
为止
例如(?<name1>\w+(?=_))
https://regex101.com/r/qJ2fL6/1
为了让它收集所有到第一个underscore
的内容
我必须执行以下操作。
(?<name1>\w+(?=_p))
可以满足我的需求,我得到以下信息:
ABCD01MAH ABCD01MAH EFGHIJ01MAH EFGHIJ01MAH 但是我使用对吗?
在一般情况下,如何获得第一个undrscore的角色? 如何获得角色,更一般地说,如何获得第2 undrscore? 如何获得角色,更一般地,如何获得第3 undrscore?
我想要的例子:
1st
ABCD01MAH
第二个
ABCD01MAH_processor
3rd
EFGHIJ01MAH_processor_A
答案 0 :(得分:1)
对于第一部分,我们可以尝试使用:
^(.*?)(?=_|$).*$
第一个捕获组将包含第一个路径。对于包含第二条路径的最多一条,我们可以使用:
^(.*?_.*?)(?=_|$).*$
更一般而言,适用于第N个词,包括第N个词:
^(.*?(?:_.*?){N-1})(?=_|$).*$
因此,对于N-1 = 3
这四个术语,我们可以使用:
^(.*?(?:_.*?){3})(?=_|$).*$