[RegEx]求一个正则,-10℃~15℃读出两个数字
发布时间:2020-12-14 00:44:54 所属栏目:百科 来源:网络整理
导读:str:="-10℃~15℃"RegExMatch(str,"^([-]?[0-9]*)[^d]~([-]?[0-9]*)[^d]$",m)MsgBox %m1%MsgBox %m2% 问题1:上述代码只能匹配带负号的,若带正号怎么办? 简单 将上面正则表达式中的 - 改为 -|+ 其中的|是或的意思,即负号或正号, 另要注意+需要转义符
str:="-10℃~15℃" RegExMatch(str,"^([-]?[0-9]*)[^d]~([-]?[0-9]*)[^d]$",m) MsgBox %m1% MsgBox %m2%
问题1:上述代码只能匹配带负号的,若带正号怎么办? 简单 将上面正则表达式中的 - 改为 -|+ 其中的|是或的意思,即负号或正号, 另要注意+需要转义符号 RegExMatch(str,"^([-|+]?[0-9]*)[^d]~([-|+]?[0-9]*)[^d]$",m)
问题2:上面的只能匹配整数,如果匹配小数怎么办? RegExMatch(str,"^([-|+]?[d]+[.]?[d]*)[^d]~([-|+]?[d]+[.]?[d]*)[^d]$",m) ;~ 用带范围好阅读一些,下面是不用范围的更简洁。 str:="-13.2℃~+15.5℃" RegExMatch(str,"^((-|+)?d+(.d+|))[^d]~((-|+)?d+(.d+|))[^d]$",m) MsgBox % m1 MsgBox % m4 ;注意括号分组关系(1(2 ) (3 ) ) ~ (4(5 )(6 ) ) 可以用?:来取消分组细说如下: (-|+)? 0或1个正负号的意思吧 d+ 1或n个各数字的意思吧 (.d+|) 一个点加1个或多个数字,或为空 [^d] 一个非数字字符,这里可以写成℃
str:="-13.2℃~15.5℃ -12℃ 12℃ +0℃ 34 15" loop if !(spos:=RegExMatch(str,"O)((?:-|+)?d+(?:.d+)?)(?=℃)",m,spos?spos:!spos)+StrLen(m[1]),s := s m[1] "`n") break MsgBox % s return (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |