Я пишу регулярное выражение в java, но я получаю сообщение об ошибке при запуске программы.java.util.regex.PatternSyntaxException: Unclosed character class near index
private final static Pattern QUOTE_VALUE = Pattern.compile("[_]?([a-zA-Z0-9_]+)=(\"[^]*\"),");
// Then later on down the road......
Macher m = QUOTE_VALUE.matcher(myString);
while (m.find()){
System.out.println("Found " + m.group(1) + " " + m.group(2));
}
Я хочу, чтобы мое регулярное выражение соответствовало этим образцам.
_MyKey="ID IN [ "ABC" ]", // Note - it has a comma after the ]
_MyKey="ID IN [ ""XYZ"" ]", // Note - it has a comma after the ]
Я пробовал его с помощью онлайн-помощника регулярных выражений - и мое регулярное выражение работает нормально. Но когда я запускаю программу, я получаю эту ошибку:
Caused by: java.util.regex.PatternSyntaxException: Unclosed character class near index 28
[_]?([a-zA-Z0-9_]+)=("[^]*"),
Другой вопрос, как я форматировать регулярное выражение, так что я могу также сравнить его с этой строки?
MyKey="ID IN [ "ABC" ]", // without the _
_MyKey="ID IN [ "ABC" ]", // with the _
Спасибо.
[EDIT]
Можете ли вы помочь мне с этой частью вопроса?
Другой вопрос: как мне форматировать регулярное выражение, чтобы я мог также сопоставить его с этой строкой?
MyKey = "идентификатор [ "ABC"]", // без _ _MyKey = "ID в [ "ABC"]", // с _
Мое предположение, что у вас есть незакрытый класс символов – keyser
Взгляните на раздел под названием «Метасимволы внутри классов символов» на [этой странице, объясняющей классы символов] (http://www.regular-expressions.info/charclass. html), где они адресуют '[^] x]' в качестве примера, который может хорошо объяснить вашу ошибку. – femtoRgon