Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式匹配3位数字,但不匹配4位数字_Regex_Osx Yosemite - Fatal编程技术网

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

Regex 正则表达式匹配3位数字,但不匹配4位数字,regex,osx-yosemite,Regex,Osx Yosemite,我有一个文件,在某些字符串中包含3位数字或4位数字。我只想选择3位数字。 我尝试了以下方法: `[0-9][0-9][0-9]` or `\d{3}` 这自然也与4位数字匹配。而且\d{3}与任何内容都不匹配 我还想只选择3位数字。有没有办法从选择中排除3位数字前后的字符 我怎样才能做到这一点?我希望能够使用sed和grep正则表达式 \b[[:alpha:]]*[[:digit:]]{3}[[:alpha:]]*\b 你应该完成你的任务。 通过输入来尝试它 echo 123 | egrep

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

`[0-9][0-9][0-9]` or `\d{3}`
这自然也与4位数字匹配。而且
\d{3}
与任何内容都不匹配

我还想只选择3位数字。有没有办法从选择中排除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:]]*\)/\2/'

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

您是否尝试过
\b\d{3}\b
?我刚刚尝试过,但效果不太好。我检查了
\d
是否能够独立工作,但它附近的
{3}
不能工作。此外,数字周围不一定有空格。你的问题不完整。这个正则表达式怎么用?在程序中(您使用什么语言)?在shell脚本中(什么shell?我假设是bash)?您想将其与
grep
sed
或其他命令行程序一起使用吗?每一个都有自己的怪癖。很抱歉,我的问题最初不够清楚。我做了一个编辑。我希望能够选择
a123b
中的数字,但不能选择
a
b