Excel自定义函数使用正则表达式详解

来源:互联网 发布:网络用语1米是多少钱 编辑:程序博客网 时间:2024/05/17 04:52

http://www.111cn.net/office/excel/52912.htm

函数ExStr功能,根据正规表达式,替换或判断或提取字符串
'参数 str 源字符串
'参数 Parttern 正则表达式字符串
'参数 ActionID  函数功能 1正则方法一,替换符合正规表达式的字符
                         ?正则方法二 判断是否有符合正规表达式
                         ?正则方法三,提取符合正规表达式的字符
'参数 Repstr 指定替换的字符,可选项,默认为空

 

代码如下复制代码


Function ExStr(Str As String, Parttern As String, ActionID As Integer, Optional RepStr As String = "")
    Dim regex As Object
    Set regex = CreateObject("vbscript.regexp")
    With regex
        .Global = True
        .IgnoreCase = True
        .MultiLine = True
        .Pattern = Parttern
    End With
    Select Case ActionID
        Case 1:
            ExStr = regex.Replace(Str, RepStr)
        Case 2:
            ExStr = regex.test(Str)
        Case 3:
            Dim matches As Object
            Set matches = regex.Execute(Str)
            For Each Match In matches
                ExStr = ExStr & Match.Value
            Next
    End Select
End Function

附常用几个正规表达式

 

"^d+$"  //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$"  //正整数"^((-d+)|(0+))$"  //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$"  //负整数"^-?d+$"    //整数"^d+(.d+)?$"  //非负浮点数(正浮点数 + 0)"^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数"^((-d+(.d+)?)|(0+(.0+)?))$"  //非正浮点数(负浮点数 + 0)"^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数"^(-?d+)(.d+)?$"  //浮点数"^[A-Za-z]+$"  //由26个英文字母组成的字符串"^[A-Z]+$"  //由26个英文字母的大写组成的字符串"[^a-z+$]"    '由26个英文字母的小写组成的字符串" [^A-Za-z0-9]+$"  ‘由数字和26个英文字母组成的字符串"^w+$"  //由数字、26个英文字母或者下划线组成的字符串"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"    //email地址"^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$"  //url/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   // 年-月-日/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"   //电话号码"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址匹配中文字符的正则表达式: [^u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]匹配空行的正则表达式:n[s| ]*r匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/匹配首尾空格的正则表达式:(^s*)|(s*$)匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*匹配网址URL的正则表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$匹配国内电话号码:(d{3}-|d{4}-)?(d{8}|d{7})?匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

 

 

 

http://club.excelhome.net/thread-591254-1-1.html

https://support.office.microsoft.com/zh-cn/article/%e4%bd%bf%e7%94%a8%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e6%9d%a5%e6%9f%a5%e6%89%be%e5%92%8c%e6%9b%bf%e6%8d%a2%e6%96%87%e6%9c%ac%ef%bc%88%e9%ab%98%e7%ba%a7%ef%bc%89-eeaa03b0-e9f3-4921-b1e8-85b0ad1c427f?CorrelationId=d1a13437-cc1f-4f9e-a2ab-c4a94e6e9528&ui=zh-CN&rs=zh-CN&ad=CN

 

用于查找

类型

示例

任一字符

?

s?t 可找到“sat”和“set”。

任何字符串

*

s*d 可找到“sad”和“started”。

单词开头

<

<(inter) 可找到“interesting”和“intercept”,但找不到“splintered”。

单词结尾

>

(in)> 可找到“in”和“within”,但找不到“interesting”。

指定字符之一

[ ]

w[io]n 可找到“win”和“won”。

此范围内的任一字符

[-]

[r-t]ight 可找到“right”和“sight”。范围必须是升序。

除了括号内范围中的字符之外的任一字符

[!x-z]

t[!a-m]ck 可找到“tock”和“tuck”,但找不到“tack”或“tick”。

前一个字符或表达式的 n 个匹配项

{n}

fe{2}d 可找到“feed”,但找不到“fed”。

前一个字符或表达式的至少 n 个匹配项

{n,}

fe{1,}d 可找到“fed”和“feed”。

前一个字符或表达式的 n 到 m 个匹配项

{n,m}

10{1,3} 可找到“10”、“100”和“1000”。

前一个字符或表达式的一个或多个匹配项

@

lo@t 可找到“lot”和“loot”。

 

0 0
原创粉丝点击