假设我有这个字符串:"X1 + X2 = Y3 + Y4 * Y5"
,从这个字符串我想得到一个数组{X1,X2,Y3,Y4,Y5}
我的问题是如何管理以下案例:"X11 + X2 = Y3 + Y4 * Y5"
,在这种情况下我会得到一个数组:{X1,X11,X2,Y3,Y4,Y5}
这是错误的,因为"X1"
不存在。
我还没有开发任何算法,我的想法是两个声明两个数组,其值来自X1..XN
和Y1..YN
,并且每个值检查它是否包含在我的字符串中,但是这样我就会遇到上面解释的麻烦。
我想知道怎么做,我宁愿不使用任何外部库来做到这一点。
答案 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字母