Я начинаю писать синтаксис синтаксиса кода в JavaScript, и я хочу выделить текст, который находится в кавычках (оба и с) в определенном цвете. Мне нужно, чтобы он мог не перепутайтесь с одним типом цитаты, находящейся в середине пары других котировок, но я действительно не уверен, где даже начать. Я не уверен, как мне нужно искать кавычки а затем найти правильный конец цитаты.Поиск начальных и конечных котировок
ответ
Если вы делаете это на вызов, взглянуть на Google Code Prettify.
для вашей проблемы, вы можете прочитать на parsing (and lexers) at Wikipedia. это огромная тема, и вы вы обнаружите, что вы столкнетесь с большим количеством проблем чем синтаксический анализ строк.
Для начала, вы могли использовать регулярные выражения Типичным регулярное выражение для сопоставления строки является (хотя они редко имеют точность истинного лексере.):
/"(?:[^"\\]+|\\.)*"/
И то же самое для '
вместо "
.
В противном случае, для синтаксического анализа символ за символом, вы бы установить какой-то состояние, которое вы в строке как только вы нажмете "
, а затем, когда вы нажмете "
, не предшествовало неравномерное количество слэш (ровное количество обратных косых черт побежало бы друг друга), вы выходите из строки.
использование стека .. если непревзойденная цитата найден толчок его .. если матч найден поп
Вы можете найти цитаты с помощью регулярных выражений, но если вы пишете подсветку синтаксиса, то единственным надежным способом является шагом через код, характер по характеру и решить, что делать дальше.
E.g. регулярное выражение
/("|')((?:\\\1|.)+?)\1/g
(соответствует «это» и «это» и «Тхи \» S ")
Я сделал это с помощью одного регулярного выражения в PHP с использованием в обратном направлении ссылки. JS не поддерживает и я думаю, что это то, что вам нужно, если вы действительно хотите обнаружить неопределенные обратные косые черты.
Может ли это регулярное выражение? http://stackoverflow.com/questions/249791/regexp-for-quoted-string-with-escaping -кавычки –