c++ - std::regex 忽略正则表达式命令中的空格

标签 c++ regex c++11 verbose

我们可以用被忽略的空格/换行符来格式化 std::regex 字符串——只是为了更好地阅读吗?是否有可用的选项,如 Python VERBOSE )?

没有冗长的:

charref = re.compile("&#(0[0-7]+"
                     "|[0-9]+"
                     "|x[0-9a-fA-F]+);")

冗长的:

charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)

最佳答案

简单地将字符串拆分为多个文字并使用 C++ 注释,如下所示:

std::regex rgx( 
   "&[#]"                // Start of a numeric entity reference
   "("
     "0[0-7]+"           // Octal form
     "|[0-9]+"           // Decimal form
     "|x[0-9a-fA-F]+"    // Hexadecimal form
   ")"
   ";"                   // Trailing semicolon
);

然后它们将组合成 "&[#](0[0-7]+|[0-9]+|x[0-9a-fA-F]+);" 由编译器。这也将允许您向不会被忽略的正则表达式添加空格。但是,额外的引号会使编写起来有点费力。

关于c++ - std::regex 忽略正则表达式命令中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37750251/

相关文章:

c# - 没有虚假强制匹配的条件匹配?

C++ condition_variable wait_for 立即返回

c++ - 为什么有些 C/C++ 头文件前面有 "sys/"?

java - 如何在 Java Android Studio 项目中使用 .so 共享库

c++ - CMake:将条件编译器标志添加到 Visual Studio 项目中

php ltrim 破坏正则表达式?

golang 中所有 url 的 Markdown url 的正则表达式

c++ - 读取文件所需的 std::getline 的替代方法

c++ - 使用 std::async 比非异步方法慢来填充 vector

c++ - DirectX11 阴影贴图问题