我想按照下划线最后出现的次数分割行,像这样:
输入:
MANY_TIME_T1=PANORAMA17
MANY_TIME_T2=OK STATUS
MANY_TIME_T1=PANORAMA18
MANY_TIME_T2=OK STATUS
COMMENT=OK
LAST<LIGNE1
输出:
Match 1 : MANY_TIME_T1=PANORAMA17
Group 1 : MANY_TIME
Group 2 : T1
Group 3 : =
Group 4 : PANORAMA17
Match 2 : MANY_TIME_T2=OK STATUS
Group 1 : MANY_TIME
Group 2 : T2
Group 3 : =
Group 4 : OK STATUS
Match 3 : MANY_TIME_T1=PANORAMA18
Group 1 : MANY_TIME
Group 2 : T1
Group 3 : =
Group 4 : PANORAMA18
Match 4 : MANY_TIME_T2=OK STATUS
Group 1 : MANY_TIME
Group 2 : T2
Group 3 : =
Group 4 : OK STATUS
Match 5 : COMMENT=OK
Group 1 : COMMENT
Group 3 : =
Group 4 : OK
Match 6 : LAST<LIGNE1
Group 1 : LAST
Group 3 : <
Group 4 : LIGNE1
我尝试这个正则表达式^s*([^_<>=]+)(_w+)?([<>=%])(.*)$
按下划线分割,但它不能像上面那样按最后一次出现分割。
可以使用
^s*(w+?)(?:_([^W_]+))?([<>=%])(.*)
参见regex演示。
细节:
^
-字符串 起始s*
-零或多个空白(w+?)
-组1:一个或多个字字符,尽可能少(?:_([^W_]+))?
-_
的可选出现以及捕获到第2组 的一个或多个单词字符(下划线除外)([<>=%])
-组3:指定字符之一(.*)
-第4组:全线