Как написать регулярное выражение Scala для захвата всего цитируемого содержимого между двумя двойными кавычками (включая экранированные кавычки)?
Моя цель - найти первую (неэкранированную) кавычку (которая является частью строки), найти парную (неэкранированную) кавычку (которая также является частью строки), а затем извлечь все между ними.
Я ожидаю что-то вроде этого:
"""??""".r findFirstMatchIn(""""abcdef\"abc"""") // Note that the real string begins from the fourth quotation marks, i.e. the real string is "abcdef\"abc"
res = Some(abcdef\"abc)
"""??""".r findFirstMatchIn(""""abcdef\"abc\t\t"""")
res = Some(abcdef\"abc\t\t)
"""??""".r findFirstMatchIn(""""abcdef\"abc\t\"\t"""")
res = Some(abcdef\"abc\t\"\t)
Я пробовал что-то вроде """([^\"])*([\\\\]+[\"tnbr/])+([^\"]*)*""".r
, но это не работает для строки "abcdef\"abc\t\"\t"
Любые советы приветствуются.
редактирование:
Мое намерение состоит в том, чтобы извлечь каждый символ между парными двойными кавычками:
"abc" => abc
"abc \ n" => abc \ n
"\ t \ n" => \ t \ n
"\\" => \\
"\" => Это неправильно (так никогда не произойдет), потому что вторая кавычка экранирована, следовательно, двойные кавычки не спарены
"abc \" => abc \ "
"hello \\" world \ "" => Это также неправильно (так никогда не произойдет), потому что \ экранируется, а кавычка не экранируется должным образом
"hello \\\" world \\\ "" => hello \\\ "world \\\"
Спасшийся символ может быть:
\ "\\ \ n \ t \ b \ r \ f \ /
в противном случае это просто текст.
редактирование:
моя строка в стиле JSON, например:
"abc": "значение"
или "abc \ t \ n \" def ":" значение "
и моя цель - извлечь abc или abc \ t \ n \ "def перед двоеточием.
Подведем итог:
моя цель - найти первую (неэкранированную) кавычку (которая является частью строки), найти парную (неэкранированную) кавычку (которая также является частью строки), а затем извлечь все между ними.