我有一个看起来像这样的字符串:String a = "name:string, age:int, address:string,city:string, zip:int";字符串由,and分隔,:它之间是fieldNameand type。每个值之间可能有空格,但应忽略任何空格。我想要的是将这个字符串转换成一个只有 contents 的 arrayList fieldName。所以上面的例子会变成List<String> result = new ArrayList<>;结果中应该有 的值name, age, address, city, zip。其他一切都应该被忽略。我如何使用 Java 中的正则表达式执行此操作?我可以通过首先执行拆分然后将,字符串数组拆分:,然后将数组的第一个元素添加到列表中来实现这一点。我问的原因是因为我想知道是否有更优雅的方法来使用正则表达式来做到这一点。
2 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
String[] b = a.split(":[^,]+(?:, *)?");
或者:
String[] b = Pattern.compile("[^, ]+(?=:)").matcher(a).results() .map(r -> r.group()).toArray(String[]::new);
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
以下正则表达式将为您提供所需的结果
[a-z]+[^, ](?=:)
第一个括号称为向前看,因此将选择 : 之前的任何内容,第一组括号表示我们需要任何字符 az(注意这些区分大小写,因此如果可以使用大写,请添加 +[AZ]),最后一组括号表示不,或空格
要在 Java 中使用它,您需要按照以下方式编写一些内容
Pattern.compile("[a-z]+[^, ](?=:)") .matcher(a) .find();
添加回答
举报
0/150
提交
取消