避免删除下划线和数字
问题描述:
我想消除所有小写字符,但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]+"
答
.Pattern = "[a-z]+"
应该做你以后,这应该匹配所有小写贪婪地写信,或者如果你想走另一条路,并确保所有被捕获的是数字和_你可以这样做:
.Pattern = "[0-9_A-Z]+"
这将匹配0-9,A-Z和_以及其他任何东西
+0
对不起,我在IDE之外掀起了一个正则表达式(因为我没有在工作中安装VS),并没有意识到我省略了引号 –
尽管如此,您将不得不为量词有相当大量的连续小写字符。在正常情况下,我预计最多不过几毫秒。 –
@AnsgarWiechers:当然,性能增益并不是有形的,只是它对于正则表达式引擎来说应该是“更容易”,因为它不必停止和恢复序列中的每个字符。 –
感谢帮助 – johndoe253