C++ 正则表达式搜索返回true,但正则表达式匹配返回空匹配集

C++ 正则表达式搜索返回true,但正则表达式匹配返回空匹配集,c++,regex,std,C++,Regex,Std,这很奇怪,我有以下std::regex(rx) 给定此字符串(str)时,哪个正则表达式搜索返回true 但是当我调用regex_match(str,m,rx)时,匹配集m是空的。在RegexBuddy中使用JavaScript模式(这似乎是我能找到的与VS2012的regex支持最接近的行为)可以正确地找到匹配项。有人有什么想法吗?正则表达式看起来指定过度,因为其他一些字符串需要额外的匹配片段…regex\u search匹配目标字符串的任何部分正则表达式匹配匹配整个字符串。正则表达式匹配目标

这很奇怪,我有以下std::regex(rx)

给定此字符串(str)时,哪个正则表达式搜索返回true


但是当我调用regex_match(str,m,rx)时,匹配集m是空的。在RegexBuddy中使用JavaScript模式(这似乎是我能找到的与VS2012的regex支持最接近的行为)可以正确地找到匹配项。有人有什么想法吗?正则表达式看起来指定过度,因为其他一些字符串需要额外的匹配片段…

regex\u search
匹配目标字符串的任何部分<代码>正则表达式匹配匹配整个字符串。正则表达式匹配目标字符串的第一部分“{{abate | nodot=1}的替代形式”。这就是
regex\u search
查找的内容。这不是整个字符串,这就是为什么
regex\u match
找不到匹配项的原因。

谢谢,这是一个有用的指导。
\{\{alternate form of\s*\|(?:\d=)?(.*?)([\|#][^\|}]*)*\}\}
{{alternate form of|abate|nodot=1}} {{qualifier|abbot}}.