c++ - 如何在 lex 中捕获多行

标签 c++ regex lex

我想为多行示例制作一个正则表达式。 我试过这样:

^"SAMPLE_SIGN"."\n".SAMPLE_SIGN\n    std::cout << "MULTIPLE ROW SAMPLE"

但这对我不起作用。

可能的输入:

some program code SAMPLE_SIGN text inside the 
sample SAMPLE_SIGN

正确的版本是什么?

最佳答案

如果你想允许它在行的任何位置,不仅是开始那么不应该使用 ^ 并允许你的标志:SAMPLE_SIGN 或:| 行尾:\n 之后可以是任何内容 *

"SAMPLE_SIGN"([^SAMPLE_SIGN]|\n)*"SAMPLE_SIGN"  std::cout << "Block"

这将允许您使用 SAMPLE_SIGN 作为 SAMPLE_SIGN block 中的第一个字符,并且。例如作为原始评论部分。

关于c++ - 如何在 lex 中捕获多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991612/

相关文章:

c++ - 查找数组中的最小数字

javascript - 使用 JavaScript 从完整路径获取不带 GET 参数的文件名?

PHP 正则表达式替换

c - 如何使用 yacc 解析 if/else 语句

c++ - 错误 : The following Boost libraries could not be found

c++ - 为什么 int arr[]={0,3,2,4,5,6,7}; 给出错误和 int arr[7]={0,3,2,4,5,6,7};不是

c - C 预处理器指令的 Lex 规则

c++ - 将 Char 从 lex 保存到 C 中的 Char 数组

c++ - undefined symbol std::__throw_bad_function_call

c# - 在任何第一个数字之前拆分字符串