2009-07-29 1 views
0

Я начинаю писать синтаксис синтаксиса кода в JavaScript, и я хочу выделить текст, который находится в кавычках (оба и с) в определенном цвете. Мне нужно, чтобы он мог не перепутайтесь с одним типом цитаты, находящейся в середине пары других котировок, но я действительно не уверен, где даже начать. Я не уверен, как мне нужно искать кавычки а затем найти правильный конец цитаты.Поиск начальных и конечных котировок

+0

Может ли это регулярное выражение? http://stackoverflow.com/questions/249791/regexp-for-quoted-string-with-escaping -кавычки –

ответ

1

Если вы делаете это на вызов, взглянуть на Google Code Prettify.

для вашей проблемы, вы можете прочитать на parsing (and lexers) at Wikipedia. это огромная тема, и вы вы обнаружите, что вы столкнетесь с большим количеством проблем чем синтаксический анализ строк.

Для начала, вы могли использовать регулярные выражения Типичным регулярное выражение для сопоставления строки является (хотя они редко имеют точность истинного лексере.):

/"(?:[^"\\]+|\\.)*"/ 

И то же самое для ' вместо ".

В противном случае, для синтаксического анализа символ за символом, вы бы установить какой-то состояние, которое вы в строке как только вы нажмете ", а затем, когда вы нажмете ", не предшествовало неравномерное количество слэш (ровное количество обратных косых черт побежало бы друг друга), вы выходите из строки.

0

использование стека .. если непревзойденная цитата найден толчок его .. если матч найден поп

1

Вы можете найти цитаты с помощью регулярных выражений, но если вы пишете подсветку синтаксиса, то единственным надежным способом является шагом через код, характер по характеру и решить, что делать дальше.

E.g. регулярное выражение

/("|')((?:\\\1|.)+?)\1/g 

(соответствует «это» и «это» и «Тхи \» S ")

0

Я сделал это с помощью одного регулярного выражения в PHP с использованием в обратном направлении ссылки. JS не поддерживает и я думаю, что это то, что вам нужно, если вы действительно хотите обнаружить неопределенные обратные косые черты.

 Смежные вопросы

  • Нет связанных вопросов^_^