Сейчас я пишу лексер, и я хочу иметь возможность сопоставлять строковый токен с учетом управляющих символов.
Итак, я хочу иметь возможность разбирать такие вещи:
'Hello World'
как [', Hello World, ']
, 'There\'s an apostrophe in here'
как [', There's an apostrophe in here, ']
'This is a backslash: \\'
как [', This is a backslash: \, ']
.
В настоящее время у меня есть следующее правило регулярных выражений для сопоставления строк: /^\s*(')(.*?)(')/s
.^\s*
учитывает начальный пробел, а (')(.*?)(')
соответствует строке 3 раза: открывающий токен, сама строка и, наконец, закрывающий токен.После того, как я узнал токен, я помещаю соответствующие токены в массив и удаляю полное совпадение с начала данных, с которыми я работаю.
Я пытался изменить свое правило для учетной записи.для сбежавших персонажей, но я не смог заставить это работать, и, честно говоря, я не знаю, куда идти дальше.Я в недоумении, что даже попробовать.Если я проверю обратную косую черту, она не будет работать на двоих.Если я проверю на два, он не сработает на три и т. Д.
Может ли кто-нибудь поставить меня на правильный путь, как это реализовать?На этом мой лексер уже закончил и делает то, что должен.Это единственное, что осталось.