我有一个字符串,其中包含不同长度的子字符串,用符号' _'并且一些子字符串必须分成多个子子字符串......
示例:
"_foo-2_bar-12_un[3;1]iver[3]se[3-7]"
应该像这样分组:
"foo-2", "2", "bar-12", "12", "un[3;1]", "3;1", "iv", "er[3]", "3", "se[3-7]", "3-7"
我想出了类似的东西:
/(?:((?:(?:\[([a-z0-9;-]+)\])|(?<=_)(?:[a-z0-9]+)|-([0-9]+))+))/ig
我遇到的问题是最后一部分。在四处寻找之后,我开始思考这是否可能。是吗?
赞赏任何形式的指导。
答案 0 :(得分:1)
您可以使用以下正则表达式:
/[^\W_]+(?:\[([^\][]*)]|-([^_]+))/g
请参阅regex demo
该模式匹配任何1 + char字母数字序列([^\W_]+
),后跟[...]
子串中没有[
且]
内部(\[([^\][]*)]
- 请注意,它会将[...]
内的内容捕获到组1中)或后跟1 {+ 1}}以外的1个字符的连字符(并且_
之后的此部分将被捕获到组2中)。
-
&#13;
在此代码中,匹配对象在每次迭代时进行分析:第0组(整个匹配)ias添加到最终数组,然后如果组1匹配,则添加组1,否则,添加组2结果数组。