这很奇怪,我有以下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的正则表达式支持的最接近的行为),正确找到了匹配。有人有任何想法吗?正则表达式看起来过于严格,因为其他一些字符串需要额外的匹配...
答案 0 :(得分:1)
regex_search
匹配目标字符串的任何部分。 regex_match
匹配整个字符串。正则表达式匹配目标字符串的第一部分“{{alternate form of | abate | nodot = 1}}”。那是regex_search
找到的。这不是整个字符串,这就是regex_match
找不到匹配的原因。