正则表达式匹配 3 位数字但不匹配 4 位数字

regex to match 3-digit numbers but not 4-digit ones

我有一个文件,在某些字符串中包含 3 位数字或 4 位数字。我希望能够只选择 3 位数的。 我尝试了以下方法:

`[0-9][0-9][0-9]` or `\d{3}`

这自然也匹配4位数字。 \d{3} 不匹配任何内容。

我也只想select 3 位数。有没有办法从selection中排除3位数字前后的字符?

我怎样才能做到这一点?我希望能够使用 sedgrep.

正则表达式

\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b

应该完成你的任务。 输入

试试看
echo 123 | egrep '\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b'

适用于 123,而 1234a1323 不被接受。如果你想用sed{3}这里貌似没用),你可以试试

sed -e 's/\(\b[[:alpha:]]*\)\([[:digit:]][[:digit:]][[:digit:]]\)\(\b[[:alpha:]]*\)//'

正则表达式仅匹配三位数字并删除前后的单词部分。