正则表达式匹配 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位数字前后的字符?
我怎样才能做到这一点?我希望能够使用 sed
和 grep
.
正则表达式
\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b
应该完成你的任务。
输入
试试看
echo 123 | egrep '\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b'
适用于 123
,而 1234
、a1323
不被接受。如果你想用sed
({3}
这里貌似没用),你可以试试
sed -e 's/\(\b[[:alpha:]]*\)\([[:digit:]][[:digit:]][[:digit:]]\)\(\b[[:alpha:]]*\)//'
正则表达式仅匹配三位数字并删除前后的单词部分。
我有一个文件,在某些字符串中包含 3 位数字或 4 位数字。我希望能够只选择 3 位数的。 我尝试了以下方法:
`[0-9][0-9][0-9]` or `\d{3}`
这自然也匹配4位数字。 \d{3}
不匹配任何内容。
我也只想select 3 位数。有没有办法从selection中排除3位数字前后的字符?
我怎样才能做到这一点?我希望能够使用 sed
和 grep
.
正则表达式
\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b
应该完成你的任务。 输入
试试看echo 123 | egrep '\b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b'
适用于 123
,而 1234
、a1323
不被接受。如果你想用sed
({3}
这里貌似没用),你可以试试
sed -e 's/\(\b[[:alpha:]]*\)\([[:digit:]][[:digit:]][[:digit:]]\)\(\b[[:alpha:]]*\)//'
正则表达式仅匹配三位数字并删除前后的单词部分。