Android中的Java Regex模式

时间:2013-07-13 20:10:24

标签: java regex string

阻止此模式的字符是什么:

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;
}

我已经测试了,带有'符号的字符串被阻止了,但我不希望这种情况发生。

1 个答案:

答案 0 :(得分:0)

目前还不清楚你想要什么。

首先:'在正则表达式中没有特殊含义。因此,您的原始正则表达式可以是:

([a-zA-Z]+)='([^']*)'$

如果你的意思是捕获带有引号的单引号的字符串,只要这些单引号用反斜杠引用,你可以使用这个正则表达式:

([a-zA-Z]+)='([^']*(?:\\'[^']*)*)'$

在Java字符串中:

"([a-zA-Z]+)='([^']*(?:\\\\'[^']*)*)'$"