// Example program
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string strr("1.0.0.0029.443");
std::regex rgx("([0-9])");
std::smatch match;
if (std::regex_search(strr, match, rgx)) {
for(int i=0;i<match.size();i++)
std::cout << match[i] << std::endl;
}
}
這個程序應該寫C++的正則表達式發現只有1分的比賽
1
0
0
0
0
2
9
4
4
3
但它寫入
1
1
檢查在這裏http://cpp.sh/和視覺工作室,都同樣的結果。
它爲什麼只找到2個匹配,爲什麼它們是相同的?
當我從這裏瞭解答案,正則表達式搜索,在第一場比賽將停止,匹配變量保存必要的(子?)的字符串值,爲其他的比賽繼續(重複)。此外,由於它在第一場比賽中停止,所以只有在結果中使用子女比賽時,纔會使用字母組合()
。
它爲什麼只放1場搜索比賽拖入匹配變量?它在第一場比賽中停止搜索? –
'\\ d'是'[0-9]' – AndyG
稍微短一點的替代方案,非常感謝您提供這些重要信息。 –