我有这个字符串:
XXXX: 150: some texxt: long text
在这种情况下,我只需要获取::
之间的数字,如:150:
。
echo "$LINE" |sed -n 's/^.*\XXXX:\(.*\)\:.*/\1/p'
让我150: some texxt
如何让它变得懒惰并在第一场比赛中停止
答案 0 :(得分:0)
$ LINE='XXXX: 150: some texxt: long text'
$ echo "$LINE" | sed -r 's@^[^:]+:([^:]+):.*@\1@g'
150
或
$ echo "$LINE" | perl -pe 's@.*?:([^:]+):.*@\1@g'
150
<强>说明强>
[^x]
表示:排除 x 字符答案 1 :(得分:0)
我不确定这是否适用于你的情况,但这个正则表达式会找到所有数字:字符。
:\s*(\d+)\s*:
您将在Capture Group 1中找到该号码。
另一种类似的方法,你不需要查看捕获组并简单地使用整个匹配(看起来这个在Perl中不起作用):
(?<=:\s*)\d+(?=\s*:)
答案 2 :(得分:0)
这个词是“非贪婪的”:
^.*?\XXXX:\(.*\)\:.*
通过在?
.*
来实现