Python正则表达式匹配数字或没有

时间:2016-06-19 23:10:11

标签: python regex python-2.7 match

我有字符串:

第一个

\-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 +]?没有用。

1 个答案:

答案 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

相关问题