我正在用正则表达式解析 Java 中的一些文本
我有看起来像这样的字符串:myAttribute="some text",并像这样解析它们
Pattern attributePattern = Pattern.compile("[a-z0-9]*=\"[^\"]*\"");
但是,我意识到人们可能希望在其属性值中使用双引号。
例如 myAttribute="some text with a double quote \" here"
如何调整我的正则表达式来处理这个
这是我解析属性的代码
private HashMap<String, String> findAttributes(String macroAttributes) {
Matcher matcher = attributePattern.matcher(macroAttributes);
HashMap<String, String> map = new HashMap<String, String>();
while (matcher.find()) {
String attribute = macroAttributes.substring(matcher.start(), matcher.end());
int equalsIndex = attribute.indexOf("=");
String attrName = attribute.substring(0, equalsIndex);
String attrValue = attribute.substring(equalsIndex+2, attribute.length()-1);
map.put(attrName, attrValue);
}
return map;
}
findAttributes("my=\"some text with a double quote \\\" here\"");
应该返回一个大小为 1 的地图值应该是一些带有双引号 \" 的文本这里