如何从Stroustrup的C++书中解释这个正则表达式?

How to interpret this RegEx from Stroustrup's C++ book?

本文关键字:解释 正则表达式 Stroustrup C++      更新时间:2023-10-16

我试图理解Stroustrups C++第4版第178页的以下正则表达式。

"('(?:[^']|\\.)*'|"(?:[^\\"]|\\.)*")|"

我相信它不是原始字符串文字,所以反斜杠应该在特殊字符的前面。 我尝试将其输入 www.regex101.com 但是找不到它匹配的内容。 我想也许我没有将多余的反斜杠与字符串隔离开来。

这里有更多经验的人有一个例子来说明这匹配什么以及原始表达式应该是什么?

更新: 因为这不是 RAW 字符串,所以我删除了多余的斜杠并提出了这个字符串:

"('(?:[^']|\.)*'|"(?:[^\"]|\.)*")|"

不幸的是,我仍然无法弄清楚它匹配什么。

谢谢

我相信这不是原始字符串文字

正确。

只需打印字符串即可查看可粘贴到 regex101.com 中的未转义版本,这可以解释其匹配的内容。

这些步骤应手动适用于此模式:

  • 从开始和结束中删除"
  • "替换为"
  • \替换为。换句话说,序列应该变成四舍五入的一半。

假设存在顶级交替,其中右侧替代项是空字符串,看起来这匹配每个输入字符串的每个位置。