我需要从字符串中提取变量。
String format = "x:y";
String string = "Marty:McFly";
然后
String x = "Marty";
String y = "McFly";
但是格式可以是任何东西,它可以看起来像这个y?x=>mcfly?marty
如何使用regex解决这个问题?
编辑:当前解决方案
String delimiter = format.replace(Y, "");
delimiter = delimiter.replaceAll(X, "");
delimiter = "\\"+delimiter;
String strings[] = string.split(delimiter);
String x;
String y;
if(format.startsWith(X)){
x = strings[0];
y = strings[1];
}else{
y = strings[0];
x = strings[1];
}
System.out.println(x);
System.out.println(y);
这很管用,但我更喜欢干净的溶液。
2条答案
按热度按时间nom7f22z1#
您可以使用以下正则表达式
(\\w)(\\W)(\\w)
这将发现任何字母数字字符后跟任何非字母数字字符后跟另一组字母数字字符。括号将对查找进行分组,因此组1将是参数1,组2将是分隔符,组3将是参数2。比较参数1和参数2可以确定它们的词序。
样品
这种方法允许您使用任何类型的格式,而不仅仅是x和y。可以有任何与正则表达式匹配的格式。
68bkxrlz2#
根本不需要regex。
输出
如果格式字符串可以更改为regex,那么使用命名的捕获组将非常简单:
与上述输出相同,包括值顺序。