У меня есть куча коротких строк в схеме:регулярное выражение или сканер
<text @varible1 more text><, @variable2 text ><@variable3 text text>
@variableN являются держателями место, каждая скобка является «раздел», который указывает на то, что если приложенная varibale пустая строка , «раздел» будет отсутствовать. Я думаю использовать регулярное выражение для извлечения каждого раздела, а затем повторно собрать всю строку на основе того, является ли соответствующая переменная пустой или нет. Например, если я прохожу @ variable1 = «привет» @ variabl3 = «мир» вся строка должен возвращать как:
text hello more text, world text
Сначала я подумал, что я мог бы использовать достаточно регулярные выражения трюков, чтобы получить работу. Затем я обнаружил, что «секции» могут входить в гнездо, а также мне нужно избегать нескольких специальных символов, таких как, очевидно, «<», «>» и «@». Чем больше я думаю об этом, тем больше мне кажется DSL. Может быть, разработка сканера была бы лучшей идеей? Я немного знаю о написании парсеров. Поэтому я немного застрял, не знаю, куда идти.
Если у кого-либо есть опыт в этом сценарии, прошу пролить свет на него. Благодарю.
Синтаксис Примеры
<text @varible1 more text><, @variable2 text ><@variable3 text text>
<text @varible1 more text><, @variable2 <, @nestedVaraible> text \<@userName\> > # with nesting and escaping
<text @varible1 more text><, @variable2 text ><@variable3 \@twitterAccount> # escaping‘@
»
Возможно, вам будет проще направить вас, если вы укажете язык, который вы используете. Возможно, у кого-то есть что-то настраиваемое, которое вы можете использовать. Конечно, звук звучит как проблема парсера. – fncomp
PHP или Python будет в порядке. – Shawn
Gotcha, можете ли вы опубликовать несколько строк, чтобы я мог получить суть вашего синтаксиса. Вероятно, я собираюсь предложить адаптировать [BeautifulSoup] (http://www.crummy.com/software/BeautifulSoup/documentation.html). – fncomp