Найти последний "в строках, где" записаны как ""
Я пытаюсь написать (Ruby) регулярное выражение для захвата двойной кавычки, которая закрывает строку EViews. В EViews строки заключаются в двойные кавычки, и чтобы включить в строку действительные двойные кавычки, мы пишем двойные двойные кавычки:
myStr = "item1 item2 item3"
myStr2 = """item1"" ""item2"" ""item3"""
Строки могут появляться в любом месте строки, поэтому мне не помогают использование начала и конца строки.
То, что я до сих пор это:
((?<="")|(?<!"))(")(?!")
То есть найдите двойную кавычку, которой предшествуют либо две двойные кавычки, либо двойная кавычка или двойная кавычка. Это захватывает заключительную двойную кавычку, но, к сожалению, также и открывающую.
Кстати, причина, по которой мне это нужно, заключается в том, что я работаю с файлом YAML, описывающим синтаксис EViews для Sublime Text 3. Что касается захвата строк, это то, что я до сих пор имел:
strings:
- match: '"'
scope: punctuation.definition.string.begin.eviews
push: string
string:
- meta_scope: string.quoted.double.eviews
- match: '"' #((?<="")|(?<!"))(")(?!")
scope: punctuation.definition.string.end.eviews
pop: true
1 ответ
Этот вопрос, возможно, был сформулирован не лучшим образом. Я закончил с решением, которое, возможно, немного неуклюже, но работает:
strings:
- match: '"'
scope: punctuation.definition.string.begin.eviews
push: string
string:
- meta_scope: string.quoted.double.eviews
- match: '""'
- match: '"'
scope: punctuation.definition.string.end.eviews
pop: true