如何从Stroustrup';s C++;书 我试图理解StruousUp C++第四版的以下正则表达式。第178页。
如何从Stroustrup';s C++;书 我试图理解StruousUp C++第四版的以下正则表达式。第178页。,c++,regex,C++,Regex,"('(?:[^\\\\']|\\\\.)*'|\"(?:[^\\\\\"]|\\\\.)*\")|" 我相信它不是原始字符串文字,所以反斜杠应该在特殊字符前面。我已经试着把它输入,但是我找不到它匹配的东西。我想也许我没有把多余的后斜线从绳子上分离出来 这里有没有经验丰富的人举了一个例子,说明这与什么匹配,以及原始表达式应该是什么 更新: 因为这不是一个原始字符串,所以我删除了额外的斜杠并生成了以下字符串: "('(?:[^\\']|\\.)*'|"(?:[^\\"]|\\.)*")|" 不
"('(?:[^\\\\']|\\\\.)*'|\"(?:[^\\\\\"]|\\\\.)*\")|"
我相信它不是原始字符串文字,所以反斜杠应该在特殊字符前面。我已经试着把它输入,但是我找不到它匹配的东西。我想也许我没有把多余的后斜线从绳子上分离出来
这里有没有经验丰富的人举了一个例子,说明这与什么匹配,以及原始表达式应该是什么
更新:
因为这不是一个原始字符串,所以我删除了额外的斜杠并生成了以下字符串:
"('(?:[^\\']|\\.)*'|"(?:[^\\"]|\\.)*")|"
不幸的是,我仍然不知道它与什么匹配
谢谢
我相信这不是一个原始字符串文字
对
您可以简单地打印字符串以查看可以粘贴到regex101.com中的未转义版本,这可以解释它匹配的内容
对于此模式,应手动执行以下步骤:
- 从开始和结束处删除
“
- 将
替换为\“
”
- 将
替换为\\
。换句话说,\
的序列应该是长度的一半,向上取整\
假设有一个顶层替换,其中右侧的替换是一个空字符串,它看起来与每个输入字符串的每个位置都匹配。您有一个输入错误。
∗
是\u2217
。将其替换为*
。此外,ˆ
是一种打字错误,请将其替换为^
。一旦这样做,您将看到它意味着删除”
中使用的单引号和双引号字符串文本之外的。是的,一半的反斜杠,在regex101.com输入regex字段中4变为2。@WiktorStribiżew我替换了坏字符和斜杠。我用这个字符串更新了这篇文章,但是我在regex101.com上尝试了它,仍然无法找到它匹配的内容。你知道我是否创建了正确的原始字符串吗?没有原始字符串这样的东西。存在原始字符串文本。请参阅@WiktorStribiżew re:non-capturing group“(?:[^\\”]|\\)*”,您是如何匹配\“?我想这会被排除在捕获之外。
匹配任何转义序列。