如何使用正则表达式按下划线最后出现的情况进行分割



我想按照下划线最后出现的次数分割行,像这样:

输入:

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组:全线

最新更新