我有字符串:
第一个
\-1,1\N,0.0464128206,0.1106913625,-0.0261445305\
第二个
\-1,1\N,0.,0.,0.\
可以手动完成
\-1,1\N,0.0,0.0,0.0\
但我正在尝试使脚本无需任何编辑即可运行
我的RegEx
\d,\d\\[A-Z],[-]?\d+.\d+,[-]?\d+.\d+,[-]?\d+.\d+
如何使RegEx在\ d +上工作,或者如果不存在则跳过它?
UPD: 我想让RegEx对两个字符串都是真的。如果不存在,如何使这部分'\ d +。\ d +'跳过第二个\ d +? [\ d +]?没有用。
答案 0 :(得分:1)
将.
之后的部分从\d+
更改为\d*
,如下所示:
\d,\d\\[A-Z],[-]?\d+\.\d*,[-]?\d+\.\d*,[-]?\d+\.\d*
\d+\.\d*
的解释是:
至少一个数字,然后恰好一个点,然后是零或一个或几个数字
请注意,我还将您的.
更改为\.
(.
表示任何字符。)
指向debuggex的链接:https://www.debuggex.com/r/nSKH3lbNr8opO09o
- 更新
你的正则表达式可以简化一点:
\d,\d\\[A-Z](?:,-?\d+\.\d*){3}
它简单地将你的,\d+\.\d*
分解为知道该组重复三次。它还将[-]
更改为-
,这更清晰。
(?: ... ){3}
语法表示非捕获组重复三次。
链接到更新的debuggex:https://www.debuggex.com/r/Cni47UR71BCgpa2A