java - 使用java中的正则表达式从下面的字符串中获取值

标签 java regex string

我是正则表达式的初学者。

我有以下字符串:

失败:2,成功:1,获取:1

输出映射:获取包含所有键值的映射,如下所示:

失败 - 2(键=失败,值=2)

成功 - 1

获取 - 1

我尝试使用以下解决方案:

public static void main(String arg[]) {            
String msg = "fail:1,success:1,policyfetch:1"; 
System.out.println(getKeyValuesFromMsg(msg));  
}                                                  

public static Map getKeyValuesFromMsg(String msg) {
  if (msg != null) {                             
    Map keyvalues = new HashMap();             
    Pattern p = Pattern.compile("(\\w+):(,+)");
    Matcher m = p.matcher(msg);                
    while (m.find()) {                         
        keyvalues.put(m.group(1), m.group(2)); 
    }                                          
    return keyvalues;                          
} else                                         
    return Collections.emptyMap();             
}                                               

最佳答案

您可以使用 split 函数,以下代码片段应该可以正常工作

Map<String,String> map = new HashMap();
    String str = "fail:2,success:1,fetch:1";
    String[] keyValueParts = str.split(",");
    for(String s  : keyValueParts){
        String parts[] = s.split(":");
        map.put(parts[0],parts[1]);
    }

    System.out.println(map);

关于java - 使用java中的正则表达式从下面的字符串中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50965878/

相关文章:

javascript - 使用replace()将链接包装在字符串中

python - 返回第一个逗号之前的所有文本

python - 需要 REGEX 帮助返回关键字之间的多行

java - 无法在 Eclipse 中创建 .dslr

java - 使用 Room 将二进制文件的链接与元数据一起存储是一种好习惯吗?

MySQL正则表达式排除字符串开头的某个文字?

c# - 删除正则表达式模式在字符串末尾有尾随反斜杠双引号的文本

c++ - 使用 std::strings 和 c 风格的字符串时如何使用模板?

java - Weblogic .ear部署java.lang.ClassNotFoundException

java - JPA 2 Hibernate 映射与主键中的复合键使用@IdClass 与 3 层结构