阻止此模式的字符是什么:
private static Map<String, String> parseMetadata(String metaString) {
Map<String, String> metadata = new HashMap<String, String>();
String[] metaParts = metaString.split(";");
Pattern p = Pattern.compile("^([a-zA-Z]+)=\\'([^\\']*)\\'$");
Matcher m;
for (int i = 0; i < metaParts.length; i++) {
m = p.matcher(metaParts[i]);
if (m.find()) {
metadata.put(((String) m.group(1)).trim(), ((String) m.group(2)).trim());
}
}
return metadata;
}
我已经测试了,带有'符号的字符串被阻止了,但我不希望这种情况发生。
答案 0 :(得分:0)
目前还不清楚你想要什么。
首先:'
在正则表达式中没有特殊含义。因此,您的原始正则表达式可以是:
([a-zA-Z]+)='([^']*)'$
如果你的意思是捕获带有引号的单引号的字符串,只要这些单引号用反斜杠引用,你可以使用这个正则表达式:
([a-zA-Z]+)='([^']*(?:\\'[^']*)*)'$
在Java字符串中:
"([a-zA-Z]+)='([^']*(?:\\\\'[^']*)*)'$"