2013-04-21 3 views
2

поэтому у меня есть строки, которые выглядят так, как в FORTRAN.Python/Regex для анализа кода

call const (hsno, npoi*nsnolay, 0.0) 

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

Я хочу, чтобы это было:

[(,hsno, npoit, * nsnolay, 0.0,)]. 

Однако то, что она делает это

[(hsno,...] 

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

Есть ли простой способ сделать это.

+5

Какое у вас текущее регулярное выражение? – Blender

ответ

7

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

Я бы рекомендовал вам получить правильный парсер. Мне нравится Python под названием Ply.

+1

Компилятор состояния Ragel способен настраивать Python и отлично подходит для создания парсеров из государственных машин. – Will

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