我正在尝试将字符串拆分为“。”除非字符串的一部分在[]中,否则我只想返回括号内的内容。
我有以下代码行。
"blah.blah[http://blah.blah.com/blah/blah#]".split(("(\\.|\\[(?=.*\\]))")
返回
[ "blah", "blah", "http:blah", "blah", "com/blah/blah#]" ]
如果我尝试
"blah.blah[http://blah.blah.com/blah/blah#]".split(("(\\.|\\[(?:.*\\]))")
我得到了
["blah", "blah"]
我不确定我需要如何定义我的非捕获组,以便它在第一次分割时[但在捕获之后不包括任何内容]
只是为了澄清我期待的阵列
["blah", "blah", "http://blah.blah.com/blah/blah#"]
答案 0 :(得分:2)
要做到这一点,最好的选择是使用“查找”方法而不是使用此模式进行拆分:
(?<=\\[)[^\\]]*(?=\\])|[^\\][.]+
请注意,替代品的顺序很重要,因为第一场胜利。因此(?<=\\[)[^\\]]*(?=\\])
必须在[^\\][.]+
之前