regex - grep(POSIX) 单行空格之间的正则表达式浮点

标签 regex grep posix

如果单行中由空格分隔的每个浮点都有效,我需要 grep(posix) 的正则表达式来打印(返回 true),例如:

3.14 12 18.9

并且不打印任何内容(返回 false) 如果一个或多个无效浮点出现在空白之间的该行中,例如:

8.12 1.1.1 78

1..28 1.09 46

浮点可以在单行中尽可能多地出现,只要是由空格分隔的有效浮点,它就会通过 grep(posix) 返回 true/print。

目前我有 grep 的正则表达式:

grep -E "^[[:blank:][:digit:]]*.+[[:digit:]]+$" FILE

它适用于如下模式:

1.13 1 1.2.3 1. 1

但我不会像 1.2.3 和 1.1 这样的模式来匹配,只是我需要在空格之间是 1.13 或 1。

注意:我只需要单行工作。

最佳答案

你可以使用

grep -E '^[0-9]+(\.[0-9]+)?([[:blank:]][0-9]+(\.[0-9]+)?)*$'

详细信息:

  • ^ - 字符串开头
  • [0-9]+ - 一位或多位数字
  • (\.[0-9]+)? - 可选出现 . 和一个或多个数字
  • ([[:blank:]][0-9]+(\.[0-9]+)?)* - 零次或多次出现
    • [[:blank:]] - 制表符或空格
    • [0-9]+(\.[0-9]+)? - 一个或多个数字,后跟可选的 . 和一个或多个数字更多数字
  • $ - 字符串结尾。

关于regex - grep(POSIX) 单行空格之间的正则表达式浮点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65758606/

相关文章:

javascript - 这个 JavaScript 正则表达式有什么作用? : "var match = self.location.href.replace(/\/$/i, ' ');"

c++ - boost 的正则表达式无法编译

Linux命令流水线理解

linux - 在Linux中追踪进程需要什么样的权限

java - Java 中忽略 SIGINT

c - 为什么 difftime() 会返回一个 double 值?

python - 如何使用python拆分字符串中的代数表达式?

regex - 如何 : Searching for a string in a file from the Windows command line?

c - 匿名管道和 Grep 命令

java - 正则表达式挂起 - Java 匹配器