避免删除下划线和数字

问题描述:

我想消除所有小写字符,但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​ 

小写字母正则表达式是[a-z]

您的正则表达式 - [^A-Z ] - 匹配任何不是大写字母和空格的字符,因此它与大于小写字母的字符匹配。

既然要删除的信件,你最好添加+量词[a-z]后,以匹配1个或多个:

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

尽管如此,您将不得不为量词有相当大量的连续小写字符。在正常情况下,我预计最多不过几毫秒。 –

+2

@AnsgarWiechers:当然,性能增益并不是有形的,只是它对于正则表达式引擎来说应该是“更容易”,因为它不必停止和恢复序列中的每个字符。 –

+1

感谢帮助 – johndoe253

.Pattern = "[a-z]+" 

应该做你以后,这应该匹配所有小写贪婪地写信,或者如果你想走另一条路,并确保所有被捕获的是数字和_你可以这样做:

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

这将匹配0-9,A-Z和_以及其他任何东西

+0

对不起,我在IDE之外掀起了一个正则表达式(因为我没有在工作中安装VS),并没有意识到我省略了引号 –