Tüm olası eşleşme eşleşmelerini bulmak istiyorum, bu nasıl mümkün olabilir?Tüm olası eşleşmeleri nasıl edinilir? Stgex 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;
}
çıkışını verir:
0: 2
1: 2
2: 25
Ama tam üçüncü 2: 2
bulamıyorum. Ben aynı anda birkaç belirteçleri aramak için O(n)
karmaşıklığı nedeniyle regex kullanmayı tercih ederim.
GÜNCELLEME:
Belki olmayan prefixable listelerine belirteç liste bölmek ve birkaç Regexes oluşturmak? Örneğin: (2|4|25|45|251|455|267)
=>(2|4)
, (25|45|267)
, (251|455)
Bu O(n log(m))
UPDATE gibi bir şeye karmaşıklığı büyüyecek 2:
Lütfen olmayan prefixable vektörlere bölme belirteç vektör kısa STL tabanlı algoritma sağlamak Bu soruyu cevapla.
Sadece 2'de eşleşme yapmak istiyorsan, niçin '| 25' kullanırsın? regex'in mi? – Phylogenesis
@Phylogenesis O (n) 'karmaşıklığı için 4 maçın tümünü keşfetmek istiyorum :) – k06a
Aynı karakteri iki farklı grupta eşleştiremediğinizi düşünüyorum (örneğin,' 2' ile eşleşemeyeceksiniz. 25'in değil, aynı zamanda kendi başına. – Phylogenesis