2016-09-15 154 views
2

我想消除所有小寫字符,但VBScript將刪除所有下劃線,小寫字母和數字。我怎樣才能使它只取出小寫字母並且不會消除我的其他角色?避免刪除下劃線和數字

With CreateObject("VBScript.RegExp") 
    .Pattern = "[^A-Z ]" 
    .Global = True 
    For Each cell In Worksheets("Sheet1").Range("C1:C25") 
     If Not IsEmpty(cell.Value) Then _ 
      cell.Value = Application.Trim(.Replace(cell.Value, "")) 
    Next cell 
End With​ 

回答

6

小寫字母正則表達式是[a-z]

您的正則表達式 - [^A-Z ] - 匹配任何不是大寫字母和空格的字符,因此它與大於小寫字母的字符匹配。

既然要刪除的信件,你最好添加+量詞[a-z]後,以匹配1個或多個:

.Pattern = "[a-z]+" 
+0

儘管如此,您將不得不爲量詞有相當大量的連續小寫字符。在正常情況下,我預計最多不過幾毫秒。 –

+2

@AnsgarWiechers:當然,性能增益並不是有形的,只是它對於正則表達式引擎來說應該是「更容易」,因爲它不必停止和恢復序列中的每個字符。 –

+1

感謝幫助 – johndoe253

0
.Pattern = "[a-z]+" 

應該做你以後,這應該匹配所有小寫貪婪地寫信,或者如果你想走另一條路,並確保所有被捕獲的是數字和_你可以這樣做:

.Pattern = "[0-9_A-Z]+" 

這將匹配0-9,A-Z和_以及其他任何東西

+0

對不起,我在IDE之外掀起了一個正則表達式(因爲我沒有在工作中安裝VS),並沒有意識到我省略了引號 –

相關問題