在特定的其他子字符串之后获取子字符串的最有效方法

lil*_*syn 2 java regex string parsing substring

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

String text = "id=2009,name=Susie,city=Berlin,phone=0723178,birthday=1991-12-07";
Run Code Online (Sandbox Code Playgroud)

我只想要信息namephone.我知道如何解析整个String,但在我的具体情况下,重要的是只获得这两个"字段".

那么,使用我的搜索方法执行以下操作的最佳/最有效方法是什么:

搜索子字符串"name ="并返回其后的子字符串("Susie"),直到它到达下一个逗号

我的方法是:

  1. 首先获取"name ="的最后一个索引
  2. 然后使用此索引作为我的解析方法的新开始

任何其他建议可能是关于如何更有效地完成这项工作并使用更浓缩的代码?谢谢你的任何意见

Kas*_*mvd 6

您可以使用以下正则表达式捕获之后的预期单词,phonename从匹配对象获取frist组:

(?:phone|name)=([^,]+)
Run Code Online (Sandbox Code Playgroud)

关于以下命令,如果它可能碰巧有一个包含的单词phonename更全面的方式,你可以在你的名字之前插入一个逗号.

(?:^|,)(?:phone|name)=([^,]+)
Run Code Online (Sandbox Code Playgroud)

阅读更多关于正则表达式的信息http://www.regular-expressions.info/