【问题标题】:Regex in Excel VBA Special Characters and Embedded SpacesExcel VBA 特殊字符和嵌入空格中的正则表达式
【发布时间】:2014-08-28 08:05:08
【问题描述】:

我必须解析一个巨大的文件,但其中一个值让我很伤心。

这是一个固定长度的六个字符的字段。允许值的说明是:

左对齐;空间填满。不能包含特殊字符或嵌入空格。如果数据不可用,则空间已满。

到目前为止我所做的是检查:

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)+

我将不胜感激任何指针。如果有一个更“多合一”的正则表达式更有意义,那就太好了,如果正则表达式是错误的方法,我非常高兴很乐意放弃它们。

【问题讨论】:

    标签: regex vba excel


    【解决方案1】:

    部分答案:

    Demo

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

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

    【讨论】:

    • 非常感谢你,我会从这里开始工作,但老实说它看起来非常棒。它总是六个字符,如果有任何遗漏,则整个文件已损坏,甚至不会开始应用。 :)
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多