正規表現を使用して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 のマップを返す必要があります。値は、二重引用符 \" を含むテキストにする必要があります。