我试图找到这个正则表达式:
<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接受我的价值!
答案 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());
}