[RegEx]求一个正则,-10℃~15℃读出两个数字

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

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...