如何使用 regex crate 匹配整个 INI 部分?

Jam*_*mes 2 regex rust

我试图匹配 INI 文件的整个部分,但每个部分下的值都是非标准 INI,现在它直到下一部分才匹配。

这是我到目前为止所拥有的: ^\[GROUP2]([^[]+)

匹配对象:

[GROUP1]
;This is something I don't want
COMMAND(value:test)
COMMAND(value:[type="submit"])
COMMAND(value:test)
COMMAND(value:test)


[GROUP2]
;This is something I don't want
COMMAND(value:test)
COMMAND(value:[type="submit"])
COMMAND(value:test)
COMMAND(value:test)
Run Code Online (Sandbox Code Playgroud)

正则表达式示例

bob*_*ble 5

功劳也归于@Toto。Rust 标签最初没有被提及,后来添加了。当它清除时,Rust regexcrate 不支持任何环顾

它的语法类似于 Perl 风格的正则表达式,但缺少一些功能,例如环视...

经过大量讨论,似乎这个正则表达式适用于@James。我不确定 Rust 中的括号需要多少转义。为了安全起见,我已经避开了每个文字括号。

^\[GROUP2\].*(?:\r?\n\s*[^\]\[\s].*)+
Run Code Online (Sandbox Code Playgroud)

在 regex101 上查看演示

  • ^\[GROUP2\] 以文字子串开头
  • .*贪婪地匹配除换行符之外的任意数量任何字符
  • (?:\r?\n\s*[^\]\[\s].*)+匹配一行或多行,以括号开头