正则表达式有效,但JAVA正则表达式库中没有?

时间:2015-08-11 02:31:00

标签: java regex

我试图找到这个正则表达式:

<ac:structured-macro ac:macro-id="........-....-....-....-............" ac:name="asd" ac:schema-version="."><ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter><ac:plain-text-body><!\[CDATA\[[^<]*</ac:plain-text-body></ac:structured-macro>

当我在http://www.regexr.com/https://regex101.com/等网站上测试数据时,它可以正常工作,但当我在Java servlet中尝试使用它时,它不会在THE SAME数据上。

我不得不修改上面的表达式,把它作为String值赋给函数,对此:

String regexExp="<ac:structured-macro ac:macro-id=\"........-....-....-....-............\" ac:name=\"asd\" ac:schema-version=\".\"><ac:parameter ac:name=\"atlassian-macro-output-type\">INLINE<\\/ac:parameter><ac:plain-text-body><!\\[CDATA\\[[^<]*</ac:plain-text-body></ac:structured-macro>";

现在,这不能找到我的比赛!你能帮我吗?我所做的只是改变&#34;到\&#34;和\ [to \\ [使Java String接受我的价值!

2 个答案:

答案 0 :(得分:1)

ac:parameter的结束标记中有一个额外的反斜杠。即<\\/ac:parameter>应删除。

答案 1 :(得分:-1)

这个怎么样?

public static void main(String args[]) {
    String r = "<ac:structured-macro ac:macro-id=\"........-....-....-....-............\" ac:name=\"asd\" ac:schema-version=\".\"><ac:parameter ac:name=\"atlassian-macro-output-type\">INLINE</ac:parameter><ac:plain-text-body><!\\[CDATA\\[[^<]*</ac:plain-text-body></ac:structured-macro>";
    Pattern p = Pattern.compile(r);
    Matcher m = p.matcher("<ac:structured-macro ac:macro-id=\"12345678-1234-1234-1235-123456789012\" ac:name=\"asd\" ac:schema-version=\".\"><ac:parameter ac:name=\"atlassian-macro-output-type\">INLINE</ac:parameter><ac:plain-text-body><![CDATA[abcde</ac:plain-text-body></ac:structured-macro>");
    System.out.println(m.matches());
}