正则表达式获取引号之间的所有内容,包括使用 Rust 的引号

问题描述 投票:0回答:2

我想使用正则表达式从 ffmpeg -list_devices 命令获取音频设备名称,如下所示:ffmpeg list devices command output

每个人的设备都不一样,我想使用命令生成的文本来列出最终用户可以看到的输出设备,所以我不能使用唯一的设备名称来列出,因为人们不太可能知道他们唯一的设备名称.

我的问题是我的一个设备 [dshow @ 0000028ff51c67c0]““你听到什么”(Sound Blaster Audigy 5/Rx)”(音频) 有括号会导致 em 而不是让整个名称得到 NULL 和“(Sound Blaster Audigy 5/Rx)”

目前我拥有的正则表达式是

".*?"
适用于所有其他设备名称。

我可以在注册表中更改设备的名称,但这只能解决我自己的问题。

也许用 ffmpeg 输出设备的不同方式是可能的,但我不知道有什么。

我正在使用 Rust,所以如果有任何解决方案,我会非常感谢他们。

regex rust ffmpeg rust-cargo double-quotes
2个回答
0
投票

如果我没理解错的话,你需要把第一个括号补到最后一个。正则表达式中的

?
使点匹配成为非贪婪的。你想要它贪婪所以你可以删除它:

这里有一个关于正则表达式贪婪/懒惰的很好的总结:https://www.regular-expressions.info/repeat.html.


0
投票

?
中的
.*?
字符使
*
量词非贪婪这意味着它将匹配尽可能少的字符,同时仍然允许模式的其余部分匹配。默认情况下,量词是贪婪的,匹配尽可能多的个字符,同时仍然允许模式的其余部分匹配。 所以,您需要做的就是删除这个修饰符:

".*"

© www.soinside.com 2019 - 2024. All rights reserved.