2014-09-16 3 views
0

У меня есть строка для поля вычисления, которая содержит поля, операторы, функции и т. Д. Мне нужно извлечь поля из этой строки. Поля находятся в формате: [TableName]. [FieldName], где TableName и FieldName mai содержат пробелы. Я решил проблему для TableName и FieldName без пробелов с регулярным выражением:Regex pattern [TableName]. [FieldName]

List<string> fieldsFound = new List<string>(); 
    string pattern = @"\[(\w*)(\])(\.)(\[)(\w*)(\])"; 
    foreach (Match match in Regex.Matches(formula, pattern)) 
    { 
     fieldsFound.Add(match.Value); 
    } 

Итак, мне нужен шаблон, который может позволить пространство внутри TableName и FieldName. Спасибо!

ответ

2

Поместите \w и \s в класс символов, чтобы соответствовать символам слова и пробела.

\[([\w\s]*)(\])(\.)(\[)([\w\s]*)(\]) 

DEMO

ИЛИ

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

\[\s*([\w\s]*?)\s*\]\.\[\s*([\w\s]*?)\s*\] 

DEMO

+1

Отлично! Мне не нужно останавливать пробелы внутри []. Первое решение - это то, что мне нужно. – BogdanIM