regex_search返回 true,但regex_match返回空匹配集

regex_search returns true, but regex_match returns empty match set

本文关键字:regex 返回 search true match      更新时间:2023-10-16

这很奇怪,我有以下标准::正则表达式(rx)

{{alternate form ofs*|(?:d=)?(.*?)([|#][^|}]*)*}}

给定此字符串 (str) 时,regex_search返回 true

{{alternate form of|abate|nodot=1}} {{qualifier|abbot}}.

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

regex_search匹配目标字符串的任何部分。 regex_match匹配整个字符串。正则表达式匹配目标字符串的第一部分"{{alternative form of|abate|nodot=1}}"。这就是regex_search发现的。这不是整个字符串,这就是regex_match找不到匹配项的原因。