加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读