2009-02-25 4 views
1

Я хочу написать RegEx, чтобы вытащить все значения переменных и их имена из инструкции объявления переменных. Скажем, у меня естьRegex для объявления переменных и инициализации в C#

INT I, к = 10, л = 0

я хочу написать регулярное выражение что-то вроде Int \ S^,? | (^ ,?) * , но это также будет принимать к = 10 т (без ИНТА предшествующего ему) в принципе идея заключается в том Если строка начинается с междунар того получить список переменного разделенный,

я знаю, для извлечения значений CSV, но здесь моя строка имеет некоторое начальное значение, а также. Как я могу это решить?

ответ

3

начать думать о структуре определения, скажем,

(a line can start with some spaces) followed by, 

(Type) followed by 

(at least one space) 
(variable_1) 
(optionally 
    (comma // next var 
    | 
    '='number // initialization 
    ) ...` 

затем попытаться преобразовать каждую группу:.

^  \s* \w+   \s+  \w+   ?   (',' | '=' \d+ ) ... 
line some type   at least var   optionally more or init some 
start spaces (some chars) one space (some chars)    vars  val digits 

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

0

Попробуйте это:

^(int|[sS]tring)\s+\w+\s*(=\s*[^,]+)?(,\s*\w+\s*(=\s*[^,]+)?)*$ 

Это будет соответствовать вашему примеру код

int i,k = 10,l=0 

И сделать несколько предположений о языке, который вы можете использовать или не используете, он также будет соответствовать:

int i, j, k=10, l=0 
string i=23, j, k=10, l=0 

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

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