import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
import org.opendaylight.yangtools.yang.common.QName;
private static final String INT32_FORMAT = "int32";
private static final String INT64_FORMAT = "int64";
private static final String BOOLEAN_TYPE = "boolean";
+ // Special characters used in automaton inside Generex.
+ // See https://www.brics.dk/automaton/doc/dk/brics/automaton/RegExp.html
+ private static final Pattern AUTOMATON_SPECIAL_CHARACTERS = Pattern.compile("[@&\"<>#~]");
private Module topLevelModule;
final PatternConstraint pattern = type.getPatternConstraints().iterator().next();
String regex = pattern.getJavaPatternString();
regex = regex.substring(1, regex.length() - 1);
+ // Escape special characters to prevent issues inside Generex.
+ regex = AUTOMATON_SPECIAL_CHARACTERS.matcher(regex).replaceAll("\\\\$0");
String defaultValue = "";
try {
final Generex generex = new Generex(regex);