如何解析如下字符串:
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/