Extraxting subStrings形成String

时间:2018-03-13 13:59:53

标签: java parsing

假设我有这个字符串:"X1 + X2 = Y3 + Y4 * Y5",从这个字符串我想得到一个数组{X1,X2,Y3,Y4,Y5} 我的问题是如何管理以下案例:"X11 + X2 = Y3 + Y4 * Y5",在这种情况下我会得到一个数组:{X1,X11,X2,Y3,Y4,Y5}这是错误的,因为"X1"不存在。

我还没有开发任何算法,我的想法是两个声明两个数组,其值来自X1..XNY1..YN,并且每个值检查它是否包含在我的字符串中,但是这样我就会遇到上面解释的麻烦。

我想知道怎么做,我宁愿不使用任何外部库来做到这一点。

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式\\P{Alnum}+进行拆分,该解析可以分为任何一个或多个非字母数字:

String text = "X11 + X2 = Y3 + Y4 * Y5";
String[] split = text.split("\\P{Alnum}+");//This equivalent to "[^a-zA-Z\\d]+"

输出

[X11, X2, Y3, Y4, Y5]

答案 1 :(得分:1)

我自己的解决方案是:

String patternString = "[X|Y]{1}\\d+";

        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(text);

        while(matcher.find()) {
            System.out.println(text.substring(matcher.start(), matcher.end()));
        }

[X | Y] {1} \\ d + 表示从任意位数开始只出现一次的X或Y字母