我想匹配任何具有模式
的字符串{"id":"362237-
any number of characters followed by
"http//:www.abc.com"
any number of characters followed by
"id":"364121-
any number of characters followed by
"http://www.efg.com"
我想将上面的模式与下面的字符串匹配。
[{"id":"362237-13","http//:www.abc.com"},{"id":"364075-13","http://www.xyz.com"},{"id":"364121-13","http://www.efg.com"}]
代码:
String pttrn=".*{\"id\":"362237-.*\"http//:www.abc.com\".*\"id\":"364121-.*\"http://www.efg.com\".*";
String mtchr="[{\"id\":\"362237-13\",\"http//:www.abc.com\"},{\"id":\"364075-13\",\"http://www.xyz.com\"},{\"id\":\"364121-13\",\"http://www.efg.com\"}]";
boolean b = Pattern.matches(pttrn, mtchr);
System.out.println("b is !!" + b);
我期待b为真,但它返回false。我的正则表达式错了。
请让我知道如何修复它。
由于
答案 0 :(得分:0)
您需要使用反斜杠将花括号转义为正则表达式引擎。 ...而且你需要用另一个反斜杠来逃避Java的反斜杠。
String pttrn=".*\\{\"id\":\"362237-.*\"http//:www.abc.com\".*\"id\":\"364121-.*\"http://www.efg.com\".*";
String mtchr="[{\"id\":\"362237-13\",\"http//:www.abc.com\"},{\"id\":\"364075-13\",\"http://www.xyz.com\"},{\"id\":\"364121-13\",\"http://www.efg.com\"}]";
boolean b = Pattern.matches(pttrn, mtchr);
System.out.println("b is !!" + b);