Regex 在找到第一个字符串后,如何生成正则表达式来查找字符串的第一个实例

Regex 在找到第一个字符串后,如何生成正则表达式来查找字符串的第一个实例,regex,Regex,我试图解析ffmpeg的输出字符串,以获得视频流的宽度和高度 内容是这样的 Input #0 ... Stream #0:0(eng): Video: blah blah blah, 1024x768 Output #0 ... Stream #0:0(eng): Video: blah blah blah, 800x600 我希望可靠地捕获1024x768(而不是800x600) 我发现了一些让我接近的东西: ((\d{2,4})x(\d{2,4})) 这将匹配输出中的1024

我试图解析ffmpeg的输出字符串,以获得视频流的宽度和高度

内容是这样的

Input #0
...
  Stream #0:0(eng): Video: blah blah blah, 1024x768

Output #0
...  
 Stream #0:0(eng): Video: blah blah blah, 800x600
我希望可靠地捕获1024x768(而不是800x600)

我发现了一些让我接近的东西:

((\d{2,4})x(\d{2,4}))
这将匹配输出中的1024x768和800x600。 我只想要第一个,我想确保返回的始终是输入#0部分中的一个

我想要的是,“Regex,给我找到单词Video后面的numberxnumber的第一个模式,它位于单词Stream#0后面”

我找遍了所有地方,找到了一些关于反向引用的链接,但我无法让它工作。

这有用吗

(Input #0).*?(\d+x\d+)

使用第二个捕获组中的值。

这似乎需要在正则表达式中填充很多内容。您可以执行类似于
^Input#0.+(\d{2,4})x(\d{2,4})$
的操作,假设点匹配所有行,并且
^
$
匹配行的开始/结束(并且它和下一个“节头”之间肯定有一个解析:
Output\0
)。但这似乎更适合逐行分析。