匹配数字字符串的正则表达式格式

匹配数字字符串的正则表达式格式

我想匹配一个字符串,基本上是一个正则表达式格式,其中我想匹配上面 0-255 和 257 之间的数字。这意味着除了 256 之外的每个数字。

有人可以帮助解决相同的正则表达式格式吗?

答案1

据我了解这个问题,这些数字都是整数。这个想法是匹配并显示包含除 256 以外的数字的条目,前面或前面不带前导零。

您的数字是否应该在一行上

grep "^[0-9][0-9]*$" | grep -v "^0*256$"

grep -v排除匹配的行而不是包含它们)

输出:

$ echo "12" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
12

$ echo "2567" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567

$ echo "256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

$ echo "0256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

$ echo "something" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

如果您使用另一个分隔符:

例如,您可以使用预处理输入sed来使它们与grep上面的命令兼容。这里有一个逗号分隔的输入,其中每个逗号都被换行符 ( \n) 替换:

sed -r 's/,/\n/g'

输出:

$ echo "2567,255,256,12,something,05,0256" | sed -r 's/,/\n/g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
12
05

最后,您的数字是否应该与其他随机字符混合:

在这种情况下,额外的步骤允许删除所有非数字字符:

sed -r 's/[^0-9]//g'

输出:

$ echo "2567,255,256,mama256a,papa1812b,something,05,0256" | sed -r 's/,/\n/g' | sed -r 's/[^0-9]//g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
1812
05

相关内容