2014-09-16 2 views
0

필드, 연산자, 함수 등을 포함하는 계산 필드의 문자열이 있습니다. 이 문자열에서 필드를 추출해야합니다. 필드의 형식은 [TableName]. [FieldName]입니다. 여기서 TableName 및 FieldName에는 공백이 포함됩니다. 나는 정규 표현식으로 공백없이 TABLENAME 및 필드 이름에 대한 문제를 해결 :정규식 패턴 [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 및 필드 이름 내부 공간을 허용 할 수 있습니다 패턴이 필요합니다. 감사합니다.

답변

2

단어와 공백 문자를 모두 일치시키는 문자 클래스로 \w\s을 삽입합니다.

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

DEMO

또는

사용하면 [] 내부에 후행 공백을 선도 캡처하지 않으려면 아래 정규식,

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

DEMO

+1

Excelent! 나는 [] 안에서 공백을 찾을 필요가 없습니다. 첫 번째 해결책은 내가 필요한 것입니다. – BogdanIM