2014-08-28 24 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

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

缺點:它將匹配> 6個字符(但不低於6)

+0

非常感謝你的是,我會從這裏開始工作,但說實話,它看起來非常棒。它總是六個字符,如果有任何遺漏,整個文件已損壞,甚至不會開始應用。 :) – RossC 2014-08-28 09:40:57