我需要匹配字符串中LAST _
之后的任何单词,然后匹配减去_
之前的所有单词。
因此test_test_DAY
将返回:[ 'test_test', 'DAY' ]
。
这是我目前所拥有的,在DAY
部分上可以正常使用。
([^\_]+$)
答案 0 :(得分:1)
模式([^\_]+$)
捕获单个匹配项超过1次而不是下划线。
您可以使用2个捕获组:
^(.*)_(.*)$
如果_
前后必须至少有1个字符,则可以将量词更改为+
而不是*
如果模式应考虑与下划线匹配,而不能有2个连续的下划线,则可以将2个捕获组与一个重复组一起使用:
^([^_]+(?:_[^_]+)*)_([^_]+)$
^
字符串的开头(
捕获组1
[^_]+
Negated character class,匹配除_ (?:_[^_]+)*
重复0次以上,与_匹配,然后跟除_ )
关闭第1组_
字面上匹配(
捕获组2
[^_]+
匹配除_
以外的任意字符1倍以上)
关闭第2组$
字符串结尾