Я задал этот вопрос несколько раз здесь Regular expression that does not contain quote but can contain escaped quote и получил ответ, но каким-то образом я не могу заставить его работать на Java.Регулярное выражение для строки с возможными escape-символами
В основном мне нужно написать регулярное выражение, которое соответствует допустимой строке, начинающейся и заканчивающейся кавычками, и может иметь кавычки между ними при условии, что они экранированы.
В приведенном ниже коде я по существу хочу сопоставить все три строки и напечатать true, но не могу.
Какое должно быть правильное регулярное выражение?
Благодаря
public static void main(String[] args) {
String[] arr = new String[]
{
"\"tuco\"",
"\"tuco \" ABC\"",
"\"tuco \" ABC \" DEF\""
};
Pattern pattern = Pattern.compile("\"(?:[^\"\\\\]+|\\\\.)*\"");
for (String str : arr) {
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());
}
}
Ваш код не соответствует вашему описанию. Обратите внимание, что элементами 'arr' являются строки, содержащие' 'tuco '', 'tuco' ABC '' и '' tuco "ABC" DEF "', то есть промежутки между цитатами: * not * экранированный – ruakh
Чтобы добавить комментарий к @ ruakh, цитируемый escape в коде будет выглядеть как 'tuco \\\" ABC \\\ "" '. –
Я имел в виду, что регулярное выражение должно соответствовать допустимой строке. кавычки в нем, они будут экранированы, что сделает его допустимой строкой. По сути, я хочу получить вывод true для всех трех выражений. – Tuco