2014-08-28 2 views
1

Мне нужно разобрать огромный файл, но одно из значений вызывает у меня много горя.Регулярное выражение в Excel Специальные символы VBA и вложенные пространства

Это поле фиксированной длины из шести символов. Описание допустимых значений:

Оставленный под конец; пространство заполнено. Не может содержать специальные символы или встроенные пробелы. Если данные недоступны, пространство заполняется.

То, что я пытался до сих пор, чтобы проверить:

If Code = "  " Then 
    MsgBox "Code is Space Filled." 

Это будет проверять, если все это пространство заполнено, что это нормально.

Далее я проверить, если есть какие-либо специальные символы, используя следующие функции:

With ObjRegex 
    .Global = True 
    .Pattern = "[^a-zA-Z0-9\s]+" 
    StripNonAlpha = .Replace(Replace(TextToReplace, "-", Chr(32)),  
End With 

Я могу сравнить две строки, исходный код и зачищенные специальных символов одного. Если они не совпадают, он содержит специальный символ и недействителен.

Это пространство, которое вызывает у меня проблемы. Я должен проверить выравнивание по левому краю (без начальных пробелов, за которыми следуют символы) и без встроенных пространств, конечные пробелы в порядке.

Я пробовал несколько вариантов вышеуказанной функции, но безрезультатно.

например. (неправильный):

(^\sa-zA-Z0-9\sa-zA-Z0-9)+ 

Я был бы признателен за любые указания. Если существует более «все в одном» регулярном выражении, что имеет больше смысла, что было бы здорово, и если регулярное выражение - неправильный способ пойти, я более чем счастлив счастлив оставить их.

ответ

1

Частичный ответ:

Demo

Regex: (?=[a-zA-Z0-9\s]{6})[a-zA-Z0-9]*\s*

Недостатки: Это будет соответствовать> 6 символов (но не менее 6)

+0

Большого спасибо за это, я буду работайте над этим отсюда, хотя, честно говоря, это выглядит довольно хорошо. Он ВСЕГДА будет шестью символами, если отсутствует какой-либо файл, поврежден, и это даже не начнет применяться. :) – RossC

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