我正在为实数写一个正则表达式,为什么它会看到E度的符号?
^[-+]?[0-9]*[.,]?([eE][-+][0-9])?[0-9]*$
示例:
-12.12 012,123 342.4E-1 --12.12 12
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
您的 E -matching片段出现在“分数”之前--匹配的片段--它位于错误的位置。这句话必须在结尾处。它应该与编写的 3E+1 OK匹配,但这并不是您想要的。
E
3E+1
你有:
它应该更像是:
^[-+]?[0-9]*[.,]?[0-9]*([eE][-+]?[0-9]+)?$
请注意,我添加了一个 + ,以便指数必须至少有一个,并且可能有许多位数。我添加了一个 ? ,所以指数符号是可选的。
+
?
给定数据文件:
使用 grep -E 运行表达式,得到输出:
grep -E
$ grep -nE -e '^[-+]?[0-9]*[.,]?[0-9]*([eE][-+]?[0-9]+)?$' data 1:-12.12