我有一个字符串列表,我想使用正则表达式对每个_字符进行分组(如果存在)
Test1_MYSTRING_val1
Test1_MYSTRING
我想获得:
Test1, MYSTRING, val1
Test1, MYSTRING
This regex适用于第一个字符串,但不适用于第二个字符串:(Test[\d])_([\w]+?)_([\w]+)
有什么建议吗?
答案 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
也匹配下划线_