如何获得最终或倒数第二个字符串正则表达式

时间:2017-05-15 16:23:25

标签: regex regex-group

我有一个字符串列表,我想使用正则表达式对每个_字符进行分组(如果存在)

Test1_MYSTRING_val1
Test1_MYSTRING

我想获得:

Test1, MYSTRING, val1
Test1, MYSTRING

This regex适用于第一个字符串,但不适用于第二个字符串:(Test[\d])_([\w]+?)_([\w]+)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

正如评论中已经提到的,使用拆分是一种更好的方法。但是,如果您仍然需要使用Regex,则可以这样做:

(Test\d)_([A-Za-z0-9]+)(?:_([A-Za-z0-9]+))?
  • 这将提取由_
  • 分隔的两个或三个捕获组
  • 第一个格式为:(Test\d)
  • 第二种格式为([A-Za-z0-9]+)至少一个字符
  • 第三个格式具有相同的格式([A-Za-z0-9]+)(?:_确保不会捕获下划线,整个内容被包围并标有?以表示它(第三组)可能存在也可能不存在

注意:我将\w更改为[A-Za-z0-9],因为记住\w也匹配下划线_

Regex 101 Demo