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

时间:2015-05-01 14:52:07

标签: regex osx-yosemite

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

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

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

我也想只选择3位数。有没有办法从选择中排除3位数之前和之后的字符?

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

1 个答案:

答案 0 :(得分:1)

正则表达式

\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:]]*\)/\2/'

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