我想找到所有可能的匹配正则表达式,它怎么可能?如何获得所有可能的匹配std :: regex
regex rx("(2|25)");
string s = "2225";
for (sregex_iterator it(s.begin(), s.end(), rx), end; it != end; ++it) {
cout << it->position() << ": " << it->str() << endl;
}
给出输出:
0: 2
1: 2
2: 25
,但无法找到第三2: 2
准确。我更喜欢使用正则表达式,因为O(n)
复杂度用于同时搜索多个令牌。
UPDATE:
也许分裂标记列表非prefixable列表和创建几个正则表达式?例如:(2|4|25|45|251|455|267)
=>(2|4)
,(25|45|267)
,(251|455)
这将增长的复杂性类似O(n log(m))
更新2:
请,非prefixable矢量以提供分离标记向量的短基于STL-算法回答这个问题。
如果您只想匹配'2',为什么要使用'| 25'作为你的正则表达式? – Phylogenesis
@Phylogenesis我想发现所有4个匹配的'O(n)'复杂性:) – k06a
我相信你不能匹配两个不同匹配组中的同一个字符(即,你将不能匹配'2' 25',但也是它自己的)。 – Phylogenesis