Java字符串搜索模式问题(包含/匹配)

问题描述 投票:3回答:4

我有一个包含几个属性值的字符串。在使用一些简单的正则表达式验证字符串是否包含特定属性值时,matches函数始终返回false值。

现在我需要这样的行为,

  1. 如果String包含\"import\" :那么我需要将isExportSet设置为true。
  2. 如果String包含\"path\" : true那么我需要将isPathSet设置为true。

我尝试如下所示,但它对我不起作用:

public class DriverClass {
    public static void main(String[] args) {
        String str = "\"import\" : \"static\",\"path\" : true";
        boolean isExportSet = str.matches("\\*+export\\*+");
        boolean isPathSet = str.matches("\\*+multipath\\s+:\\s+true");

        System.out.println("Export " + isExportSet);
        System.out.println("Path  " + isPathSet);
    }
}
java string
4个回答
0
投票

如果以下代码符合问题定义,请告诉我。

static String str = "\"import\" : \"static\",\"path\" : true";

static void test(String str) {
    Map<String, String> map = new HashMap<String, String>();
    String[] parts = str.split("(:|,)");
    for (int i = 0; i < parts.length - 1; i+=2) {
        map.put(getUnquotedStr(parts[i]), getUnquotedStr(parts[i+1]));
    }
    System.out.println(map.size() + " entries: " + map); // 2 entries: {path=true, import=static}
    boolean isExportSet = "".equals(map.get("import"));
    boolean isPathSet = "true".equals(map.get("path"));
    System.out.println(isExportSet + " - " + isPathSet);
}

private static String getUnquotedStr(String str) {
    return str.replaceAll("\"", "").trim();
}

将在控制台上打印如下:

  • 2个条目:{path = true,import = static}
  • 错 - 真的

0
投票

你可以简单地使用str.contains("valueToSerach")


0
投票

您可以使用

\"import\"
\"(path|multipath)\"

请不要将*与另一个导致错误的数量指示器连接起来。

既然你想检查“难,你必须将它们包含在你的表达中。


0
投票

测试包含\"import\"的字符串只是检查字符串是否包含"import"。在正则表达式中,您需要忽略\检查,因为这是Java的转义字符,能够处理字符串中的双引号,而不会结束字符串定义。但是,您还需要在正则表达式中转义这些字符。

对于"import",正则表达式成为str.matches(\"import\")。类似于"path"字符串。

我发现这是一个检查正则表达式的便捷工具:Free Formatter

© www.soinside.com 2019 - 2024. All rights reserved.