пятница, октября 07, 2011

Regex для распарсивания выражений с форматирующей маской {name: formatMask, formatLength}

Понадобилось недавно написать regex-выражение для распарсивания строк вида {name: formatMask, formatLength}, при этом форматирующая маска или длина могут присутствовать или отсутствовать.

Привожу код такого regex:


\{\s*(?<FieldExpression>\s*(?<FieldName>\w{1,}){1}\s*(?<FormatExpression>(\s*(?<ColonSeparator>[:])|(?<CommaSeparator>[,]))\s*(?(ColonSeparator)(?<FormatMask>\w*)|)[,]*\s?(?<Length>\d+)*)*)\s?\}


В группах имеем возможность получить сам fieldName, его маску fieldMask и длину length. Еще хочу отметить, что при работе с regex очень помогает такой инструмент как Rad Software Regular Expressions Designer -http://www.radsoftware.com.au/?from=RegexDesigner.



Комментариев нет: