除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat4/483.html,VBA交流群273624828。
这节继续来讲下正则表达式的基本符号。
[xyz] |
字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。 |
[^xyz] |
负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。 |
[a-z] |
字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身. |
[^a-z] |
负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。 |
这节来看下中括号[]的用法。中括号就是对其中的值进行枚举匹配。[abc]表示既可以匹配a,又可以b还可以c,前面加个符号^就表示匹配除abc以外的任意字符或数字,如果字符是有规律的也可以用[a-d],[1-9]这种形式,表示匹配a到d的字符,[1-9]表示匹配1至9的数字。
看下例子
Sub Macro() Dim str, regx str = "学挖123掘机aaaaa哪b家Maa强" Set regx = CreateObject("VBScript.RegExp") With regx .Global = True .Pattern = "[abM]" str = .Replace(str, "") End With Debug.Print str End Sub
上面的代码匹配a,b,M三个字符中的任意一个都可以,所以结果就是“学挖123掘机哪家强”。
.Pattern = "[^abM]"
上面的模式表示匹配既不是a又不是b又不是M的任意字符,所以最后只剩下了“aaaaabMaa”。
Sub Macro() Dim str, regx str = "学挖掘机abcdABCD哪b家Eaa强" Set regx = CreateObject("VBScript.RegExp") With regx .Global = True .Pattern = "[a-d]" str = .Replace(str, "") End With Debug.Print str End Sub
上面的代码匹配a到d的所有字符,即相当于[abcd],所以结果是“学挖掘机ABCD哪家E强”
.Pattern = "[a-dA-E]"
上面的代码匹配小写abcd和大写ABCDE,注意两者之间是没有逗号的,最后结果是“学挖掘机哪家强”,那么仿照这个如果要匹配1,2,3,6,7,8,9就可以写成.Pattern = "[1-36-9]",注意3和6之间没有任何符号。
|