这很奇怪,我有以下 std::regex (rx)
\{\{alternate form of\s*\|(?:\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
匹配整个字符串。正则表达式匹配目标字符串的第一部分,“{{alternate form of|abate|nodot=1}}”。这就是 regex_search
找到的内容。这不是整个字符串,这就是 regex_match
找不到匹配项的原因。
关于c++ - regex_search 返回 true,但 regex_match 返回空匹配集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378379/