从正则表达式获取子字符串

时间:2009-11-06 19:57:45

标签: regex grep

以下是文字行:

SRC = '999'

其中999可以是任意三位数。

我需要一个grep命令,它会返回给我999.我该怎么做?

8 个答案:

答案 0 :(得分:4)

以下是使用sed

的方法
grep SRC=\'.*\' | sed 's/SRC=.\(.*\)./\1/'

答案 1 :(得分:2)

线条是否始终采用SRC='nnn'格式?然后你可以使用

grep SRC | cut -d"'" -f2

答案 2 :(得分:2)

您可以使用-o上的grep选项仅返回与正则表达式匹配的字符串部分:

echo "SRC='999'" | grep -o -E '[0-9]{3}'

答案 3 :(得分:1)

你不能用普通的grep做到这一点。正如我的盒子上的手册页所述:“grep - 匹配图案的打印线条”grep只打印线条,而不是线条的一部分。

我会推荐awk,因为它可以同时进行模式匹配和子行提取:

awk -F\' ' /SRC/ {print $2}'

答案 4 :(得分:1)

刚刚sed会做

$ echo SRC='999' | sed '/SRC/s/SRC=//'
999

答案 5 :(得分:0)

平台grep或一般正则表达式?

正则表达式

SRC\=\'(\d{3})\'

答案 6 :(得分:0)

为什么grep?怎么样..

substr("SRC='999'",6,3)

答案 7 :(得分:-1)

取决于您的平台/语言。

Ruby中的

string = "SRC = '999'"

string.match(/([0-9]{3})/).to_s.to_i 

将返回一个整数