java匹配变量的正则表达式

时间:2013-03-08 17:52:46

标签: java

我想匹配任何具有模式

的字符串
{"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。我的正则表达式错了。

请让我知道如何修复它。

由于

1 个答案:

答案 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);