java - 重复的正则表达式

标签 java regex string

如何解析如下字符串:

name1="val1"    name2="val2"    name3="val3"

我无法使用split(\s+),因为它可以是name = "val 1"。 我正在做java,但是任何语言都可以。

最佳答案

这是用 Java 编写的,正则表达式略有不同,捕获组将名称/值对放入 Map<String,String> 中。 .

Matcher.find() 的用法在 while循环是典型的。

    import java.util.*;
    import java.util.regex.*;
    //...

    String pattern = "(\\w+)\\s*=\\s*\"([^\"]*+)\"";

    String text = "name1 = \"val 1\"    name2=\"val2\"    name3=\"val3\"";
    System.out.println(text);
    // name1 = "val 1"    name2="val2"    name3="val3"

    Matcher m = Pattern.compile(pattern).matcher(text);
    Map<String,String> map = new HashMap<String,String>();
    while (m.find()) {
        map.put(m.group(1), m.group(2));
    }
    System.out.println(map);
    // {name3=val3, name1=val 1, name2=val2}

API 链接

正则表达式.info 链接

关于java - 重复的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814507/

相关文章:

java - 编译器在 Integer 上的行为不同。为什么下面的代码在一种情况下会出现编译器错误?

java - 简单的 GUI Java 计算器

java - 如何找到字符串中最常见的部分?

string - 查找 []byte slice 中所有出现的字符串

python - 尝试通过将行添加到单个多行字符串中来逐行打印显示

java - java中如何分析内存碎片?

java - Java 中正则表达式的问题

regex - 如何匹配 procmail 邮件正文中的任何空格?

javascript - 不匹配正则表达式

java - android应用程序中的堆空间