Regex 正则表达式-搜索直到出现特定字符串

Regex 正则表达式-搜索直到出现特定字符串,regex,linux,grep,rtmp,ngrep,Regex,Linux,Grep,Rtmp,Ngrep,我正在使用ngrep和grep从网络流量中提取一些字符串: sudo ngrep -W byline | grep... 现在我希望grep搜索一个字符串并从第一个字母开始复制,直到出现不同的字符串。字符串是rtmp和。 例如: "fwef-$*nVrtmp://Ggdggragravrv.com/lolwtf.mp5skill0rz%%&:/getr4kt..Glub" 应变成: "rtmp://Ggdggragravrv.com/lolwtf.mp5skill0rz%%&

我正在使用
ngrep
grep
从网络流量中提取一些字符串:

sudo ngrep -W byline | grep...
现在我希望grep搜索一个字符串并从第一个字母开始复制,直到出现不同的字符串。字符串是
rtmp
例如:

"fwef-$*nVrtmp://Ggdggragravrv.com/lolwtf.mp5skill0rz%%&:/getr4kt..Glub"
应变成:

"rtmp://Ggdggragravrv.com/lolwtf.mp5skill0rz%%&:/getr4kt"

这有可能吗?

您可以尝试下面的grep命令,该命令使用基于正则表达式的

$ echo "fwef-$*nVrtmp://Ggdggragravrv.com/lolwtf.mp5skill0rz%%&:/getr4kt..Glub" | grep -oP 'rtmp.*?(?=\.\.)'
rtmp://Ggdggragravrv.com/lolwtf.mp5skill0rz%%&:/getr4kt

这包括
rtmp到
之前的内容。
。。到rtmp之前的时间。
rtmp到前面的
rtmp,
。。到刚好在
之前

 # (?:rtmp|\.\.)(?:(?!rtmp|\.\.).)*(?=\.\.|rtmp)

 (?: rtmp | \.\. )
 (?:
      (?! rtmp | \.\. )
      . 
 )*
 (?= \.\. | rtmp )
如果没有可用的perl(-compatible)正则表达式,可以使用普通的egrep进行匹配。但是,您必须找出终止表达式的倒数。例如,如果字符串正好在
之前终止,则它匹配任何不包含
的序列,这意味着它匹配任何非句点的字符,或者匹配后跟非句点的字符的句点。这与“可选期间后接非期间”的说法相同:

如果终止字符串是单个字符,则更简单:只需匹配除终止符以外的任何字符。例如,要将字符串匹配到但不包括

$ echo "......mp3:mp3/19695c8f0fcbe45521908c3ec60f8f96554a523e?Expires=1421093669&..." |
> grep -oE 'mp3/[^?]*'
mp3/19695c8f0fcbe45521908c3ec60f8f96554a523e

用准确的输入更新您的问题。@RainerZufall-rtmp之前的“.”是什么意思?可能是
。。rtmp
rtmp..
或甚至
rtmp rtmp
?@sln好的,谢谢。这个怎么样?输入:"…mp3:mp3/19695c8f0fcbe45521908c3ec60f8f96554a523e?Expires=1421093669&Signature=KstuSlKVypnPEF6Ird.zt52iys5yncgvipv1pfmck35zmdbpckmnqvdkp1qjqp8abp4mlbhariqjlfcdewq98zifxctldxdadealkou0byowdjlca9zn1emiqlqlb0fsruhad~XaqL1G.bbuqoqoqoqozzzzzzg12jga1yiv8jg8jgqdqaqfqqlqlqlqlqf8qf8qf7qqf8bjjjqf8bjqlqf8bjqf8bjqf8bjqlzzzzzzzzzzzzzzz98b4W0oQtMP.qbtyreZ-eaVdFN0rP2MDevoIwSAJv0~O5MEiTp0yOxCF764F0PBrnuMWUPLnyhnt~QWg_uuu&Key Pair Id=APKAJXKSII4ED2EOGZZA#“输出:mp3/until#,但不包括#@RainerZufall-
mp3/[##]*(?=#)
$ echo "......mp3:mp3/19695c8f0fcbe45521908c3ec60f8f96554a523e?Expires=1421093669&..." |
> grep -oE 'mp3/[^?]*'
mp3/19695c8f0fcbe45521908c3ec60f8f96554a523e