В настоящее время я использую dom4j для чтения шаблона регулярных выражений из xml, но функция совпадений всегда возвращает false, даже через строку возвращает точно такое же, что я набрал в xml.DOM4J Read Regex BUG
Выборка 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");
}
}
}
Если заменить переменную username_pattern_notwork с username_pattern_work в Pattern.matches (username_pattern_notwork, "ооо"), его будет работать как обычно
Практически право, не совсем. Строка, считанная из внешнего источника, не нуждается в экранировании: нужно избегать только строковых литералов Java. –