栏目分类
发布日期:2024-09-08 16:34 点击次数:174
正则抒发式在线测试-菜鸟器用艳照门之风云再起
正则抒发式替换函数Function RE(ByVal source_str$, pat$, Optional replace_str$ = "$1") '通用正则替换函数,函数界说RE(字符串,正则模式,替换值)对字符串复返正则替换后的字符串 '可在表格中使用,仅适用单个单位格 With CreateObject("vbscript.regexp") '正则抒发式 .Global = True .Pattern = pat RE = .Replace(source_str, replace_str) End With End Function诈欺1,索要1个字母+10个数字
《excel吧发问-索要共同特征的数据》
正则:.*([a-zA-Z]\d{10}).*
图片艳照门之风云再起
诈欺2,中英文分割《excel吧发问-中英文分离》
正则:索要汉文[a-zA-Z]*或[^一-龥]*或([a-zA-Z]+) 正则:索要英文[^a-zA-Z]*或[一-龥]*或.*?([a-zA-Z]+).*
图片
诈欺3,索要11位手机号《excel吧发问-索要11位手机号》
正则:.*(\d{11}).*
图片
诈欺4,指定翰墨替换《excel吧发问-将一列骨子引入到另一列骨子中间》
正则:([a-zA-Z]\d+)
图片
诈欺5,索要终末一个括号的骨子《excel吧发问-单位格字数不等,括号个数不等,怎么截取终末一个括号的骨子》
正则:.*(?=\()
图片
诈欺6,索要统统括号的骨子正则:.*?(\(.*?\))
图片
诈欺7,索要塞址中的省、市、县、乡《wps吧发问-怎么将省市县乡分列涌现》
正则:(.*?(省|市|自治区))?(.*?(市|区|自治州|盟|地区))?(.*?(县|市|区|旗))?(.*?(乡|镇|街谈))?(.*)
细心:直辖市地址应如下图所示写法
图片
淫淫色情网参考贵寓: 《百度百科-地级行政区》 《百度百科-县级行政区》
诈欺8,仅保留数字和象征《excel吧发问-怎么去除单位格中的翰墨、字母,只保留数字和标点象征》
正则:[^\d-,]
细心:文中为汉文逗号
图片
诈欺9,索要单价(整数、浮点数)《excel吧发问-怎么索要内部的单价》
正则:.*?(\d+(\.\d+)?)元.*
图片
正则抒发式得回函数2023.7.30更新,加多赞成复返成果既能输出数组,又能输出数组的第n个值
Function RE_execute(ByVal source_str$, pat$, Optional n& = 0) '通用正则得回函数,函数界说RE_execute(字符串,正则模式,复返值)对单位格复返正则得回后的字符串数组 '复返值n为0时复返数构成果,为其他整数时复返第n个值,正数规章负数倒序(-1为终末一个) Dim result, i&, num& With CreateObject("vbscript.regexp") '正则抒发式 .Global = True .Pattern = pat Set mhs = .Execute(source_str) num = mhs.Count If num = 0 Then RE_execute = "": Exit Function ReDim result(1 To num) For i = 0 To num - 1 result(i + 1) = mhs(i).Value Next If n = 0 Then RE_execute = result ElseIf n > 0 And n <= num Then RE_execute = result(n) ElseIf n < 0 And Abs(n) <= num Then RE_execute = result(n + num + 1) Else RE_execute = "" End If End With End Function诈欺1,索要品名、型号
《excel吧发问-索要品名、型号》
Sub 品名型号() Dim s$, rng, r '一定要界说类型,不然报错“ByRef参数类型不符” Set rng = Intersect(ActiveSheet.UsedRange, Selection) 'intersect语句幸免罗致整列形成无须野心 If rng.Columns.count > 1 Then Debug.Print "仅赞成单列": Exit Sub '仅赞成单列,多列则退出 For Each r In rng s = r.Value result = RE_execute(s, "[A-Za-z0-9/-]+") If IsArray(result) Then r.Offset(0, 2).Resize(1, UBound(result)) = result Next End Sub
图片
诈欺2,索要数字、运算符《excel吧发问-索要数字、运算符》 该正则匹配特地暴力,适用整数、极少的 A*B*C=D 花式
Sub 数字运算符() Dim s$, rng, r '一定要界说类型,不然报错“ByRef参数类型不符” Set rng = Intersect(ActiveSheet.UsedRange, Selection) 'intersect语句幸免罗致整列形成无须野心 If rng.Columns.count > 1 Then Debug.Print "仅赞成单列": Exit Sub '仅赞成单列,多列则退出 For Each r In rng s = r.Value result = RE_execute(s, "\d+(\.\d+)?\*\d+(\.\d+)?\*\d+(\.\d+)?\=\d+(\.\d+)?") If IsArray(result) Then r.Offset(0, 2).Resize(1, UBound(result)) = result Next End Sub
图片
诈欺3,索要数字规格《excel吧发问-索要数字规格》
Sub 索要数字() Dim rng As Range, r, s$ Set rng = [a2:a11] For Each r In rng s = r.Value result = RE_execute(s, "\d+(\.\d+)?(\-\d+)?") If IsArray(result) Then r.Offset(0, 1).Resize(1, UBound(result)) = result Next End Sub
图片
诈欺4,自动野心积分《excel吧发问-汇总积分》,索要+粗略-之后的数字,对数字乞降
Sub 自动野心积分() Dim rng As Range, r, arr, a Set rng = [a2:a5] For Each r In rng arr = RE_execute(r.Value, "[+-]\d+") a = Join(arr, "") r.Offset(0, 1) = Application.Evaluate(a) Next End Sub
图片
诈欺5,规格索要 指摘区发问,对2种规格别离索要,同期使用了RE函数和RE_execute函数Sub 规格索要() Dim col, rng, r, s, result '一定要界说类型,不然报错“ByRef参数类型不符” col = 1 '需要惩处的列号,字母"a"=数字1 With ActiveSheet Set rng = Intersect(.UsedRange, .Cells(1, col).EntireColumn) 'intersect语句幸免罗致整列形成无须野心 For Each r In rng If Len(r) Then result = RE_execute(r.Value, "\d+(\.\d+)?~\d+(\.\d+)?") r.Offset(1, 2).Resize(2, 1) = WorksheetFunction.Transpose(result) s = RE(r.Value, ".*?\*(\d+(\.\d+)?\*\d+(\.\d+)?)") r.Offset(1, 3).Resize(2, 1) = WorksheetFunction.Transpose(Split(s, "*")) End If Next End With End Sub
图片
也可仅使用RE_execute函数索要规格,以下代码调用了《Excel·VBA单位格区域行列数变嫌函数》wraparr函数(如需使用代码需复制)Sub 规格索要2() Dim col, rng, r, result '一定要界说类型,不然报错“ByRef参数类型不符” col = 1 '需要惩处的列号,字母"a"=数字1 With ActiveSheet Set rng = Intersect(.UsedRange, .Cells(1, col).EntireColumn) 'intersect语句幸免罗致整列形成无须野心 For Each r In rng If Len(r) Then result = RE_execute(r.Value, "\d+(\.\d+)?(~\d+(\.\d+)?)?") result = wraparr(WorksheetFunction.Transpose(result), "col", 2) r.Offset(1, 2).Resize(2, 2) = result End If Next End With End Sub
图片
本站仅提供存储作事,统统骨子均由用户发布,如发现存害或侵权骨子,请点击举报。