猿问

如何解析仅包含数组列表部分需要的值的字符串?

我有一个看起来像这样的字符串:

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 中的正则表达式执行此操作?

我可以通过首先执行拆分然后将,字符串数组拆分:,然后将数组的第一个元素添加到列表中来实现这一点。

我问的原因是因为我想知道是否有更优雅的方法来使用正则表达式来做到这一点。


POPMUISE
浏览 107回答 2
2回答

蛊毒传说

String[]&nbsp;b&nbsp;=&nbsp;a.split(":[^,]+(?:,&nbsp;*)?");或者:String[]&nbsp;b&nbsp;=&nbsp;Pattern.compile("[^,&nbsp;]+(?=:)").matcher(a).results() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(r&nbsp;->&nbsp;r.group()).toArray(String[]::new);

蝴蝶刀刀

以下正则表达式将为您提供所需的结果[a-z]+[^, ](?=:)第一个括号称为向前看,因此将选择 : 之前的任何内容,第一组括号表示我们需要任何字符 az(注意这些区分大小写,因此如果可以使用大写,请添加 +[AZ]),最后一组括号表示不,或空格要在 Java 中使用它,您需要按照以下方式编写一些内容Pattern.compile("[a-z]+[^, ](?=:)")        .matcher(a)        .find();
随时随地看视频慕课网APP

相关分类

Java
我要回答