clang 格式正则表达式语法参考

clang-format regex syntax reference

我希望 clang-format 不修改我用来将函数彼此分开的注释行。我认为 commentPragmas 是正确的选择,但我找不到有关 clang-format 正则表达式格式的信息。

我尝试 commentPragmas: '^/\*-.*' 捕获我的分隔线,看起来像这样

/*------------------------------------------------------------------*/

但是上面的正则表达式不起作用...我在哪里可以找到 clang 格式的正则表达式的语法?

TL/DR: The flavor is POSIX ERE


据我所知,ClangFormat docs 中没有记录正则表达式风格,这非常无用。

让我们深入源代码一探究竟。

有一个名为 ContinuationIndenter 的 class,它有一个 CommentPragmasRegex 字段,类型为... llvm::Regex right here。好吧,这也没什么用,但也许它只是一个包装器...

结果 llvm::Regex is a wrapper around... llvm_regex. The header includes this comment 不过:

This file implements a POSIX regular expression matcher. Both Basic and Extended POSIX regular expressions (ERE) are supported. EREs were extended to support backreferences in matches. This implementation also supports matching strings with embedded NUL chars.

header that defines llvm_regex中我们还可以找到这样的评论:

This code is derived from OpenBSD's libc/regex