DOM4J 读取正则表达式 BUG

DOM4J Read Regex BUG

我目前正在使用 dom4j 从 xml 中读取正则表达式模式,但是即使字符串 return 与我输入的内容完全相同,匹配函数也总是 return false xml.

样本XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <username-pattern><![CDATA[^\w+$]]></username-pattern>
</root>

示例代码(无效):

public class Test 
{
    public static void main( String[] args ) throws DocumentException
    {
        File inputFile = new File("C://test/test.xml");
        SAXReader saxBuilder = new SAXReader();
        Document document = saxBuilder.read(inputFile);
        Element rootElement = document.getRootElement();  

        String username_pattern_notwork = rootElement.elementTextTrim("username-pattern");
        String username_pattern_work = "^\w+$";
        if(!(Pattern.matches(username_pattern_notwork, "ooo"))){
            System.out.println("===============Err=========");
        }else{
            System.out.println("OK");
        }

    }
}

如果在Pattern.matches(username_pattern_notwork, "ooo")中将变量username_pattern_notwork替换为username_pattern_work,它将正常工作

看完源码后, dom4j 从 xml 读取的字符串已经被转义。

这意味着我不需要手动转义 xml 文件中的字符串。 即

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <username-pattern><![CDATA[^\w+$]]></username-pattern>
</root>