根据特定模式对标签进行分组

问题描述 投票:0回答:1

类似的文本片段

04040p0015 宏驱动对象/宏 DO SERVO、VECTOR、HLA、SERVO_AC、VECTOR_AC、SERVO_I_AC、VECTOR_I_AC、A_INF、S_INF、R_INF、B_INF、TM31、TM15DI_DO、TM120、TM150,

必须被解析成四组

  1. 04040
  2. p0015
  3. 宏驱动对象/宏DO
  4. 伺服、矢量、HLA、SERVO_AC、VECTOR_AC、SERVO_I_AC、VECTOR_I_AC、A_INF、S_INF、 R_INF、B_INF、TM31、TM15DI_DO、TM120、TM150、

第一组和第二组代表不同类型的 ID,第三组代表标题,第四组包含标签。

正则表达式

([0-9]+)([rp][0-9]{4,})(.*)([A-Z]{2,}_?[A-Z,0-9]{2,},)

退货

  1. 04040
  2. p0015
  3. 宏驱动对象/宏 DO SERVO、VECTOR、HLA、SERVO_AC、VECTOR_AC、SERVO_I_AC,
    VECTOR_I_AC、A_INF、S_INF、R_INF、B_INF、TM31、TM15DI_DO、TM120、
  4. TM150,

即,它正确区分了前两组,但未能正确分离后两组。

正则表达式有什么问题?

regex regex-group
1个回答
0
投票

您可以使用此正则表达式来获取所需的 4 个捕获组:

(\d+)([rp]\d{4,})(.*?)\s+((?:[A-Z]\w+,\s+)+)

正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.