如何使用Java中的Pattern拆分字符串

时间:2015-08-02 08:36:04

标签: java regex

我想使用Pattern中的方法拆分字符串,这是我做的

String s = "[[[0.093493,51.6037],[0.091015,51.5956]]]"
Pattern branchPattern = Pattern.compile("[...]");
String[] split = branchPattern.split(s);

我想得到String []包含[0.093493,51.6037]和[0.091015,51.5956]的结果。但是这段代码的结果并不是我想要的结果。我该怎么分裂这个字符串?或者有没有像使用匹配器以我想要的格式分割这个字符串?

2 个答案:

答案 0 :(得分:0)

只是做匹配而不是分裂。

Pattern p = Pattern.compile("\\[[^\\[\\]]+\\]");
Matcher m = p.matcher(s);
while(m.find())
{
System.out.println(m.group());
}

DEMO

string.replaceAll("^\\[{2}|\\]{2}$", "").split(",(?=\\[)");

string.replaceAll("^\\[+|\\]+$", "").split("\\],\\[)");

答案 1 :(得分:0)

我试图用另一种观点回答。看看。假设您已经在两个特殊字符之间放置了参数,例如:#parameter#或参数,或者甚至是两个不同的符号,例如* paramter#。我们可以通过以下代码在这些符号之间列出所有这些参数:

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;

public class Splitter {

    public static void main(String[] args) {

        String pattern1 = "#";
        String pattern2 = "#";
        String text = "(#n1_1#/#n2_2#)*2/#n1_1#*34/#n4_4#";

        Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
        Matcher m = p.matcher(text);
        while (m.find()) {
            ArrayList parameters = new ArrayList<>();
            parameters.add(m.group(1));
            System.out.println(parameters);
            ArrayList result = new ArrayList<>();
            result.add(parameters);
            // System.out.println(result.size());
        }

    }
}

此处列表结果将包含参数n1_1,n2_2,n4_4。