Excel VBA特殊字符和嵌入空间中的正则表达式

时间:2014-08-28 08:05:08

标签: regex excel vba 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

我可以比较两个字符串,原始代码和剥离的特殊字符之一。如果它们不匹配则包含特殊字符且无效。

这是造成我问题的空间。我必须检查左对齐(没有前导空格后跟字符)并且没有嵌入空格,尾随空格都可以。

我尝试了上述功能的一些变化,但无济于事。

e.g。 (错误的):

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

我会很感激任何指针。如果有更多的全部在一个'正则表达式更有意义,如果正则表达式是错误的方式,那么非常高兴乐于放弃它们。

1 个答案:

答案 0 :(得分:1)

部分答案:

Demo

正则表达式:(?=[a-zA-Z0-9\s]{6})[a-zA-Z0-9]*\s*

缺点:它将匹配> 6个字符(但不少于6个)