2016-03-19 20 views
0

ben büyük dize filtrelemek için aşağıdaki regex kullanıyorum: Bu sonsuza dek sürerC# aşağıdaki RegEx çok yavaş büyük dize

(?m)(?(^*(?=.*\\btrue\\b)(?=.*\\ba\\b).*\\r*$)(.*)|(?!)) 

bunu. Burada neyi yanlış yapıyorum? Bu benim modelimde bir sorun mu yoksa gecikmeye neden olan bir dizge uzunluğudur.

Lütfen burada bana yardım edin. Şimdiden teşekkürler.

+3

geçerli bir normal ifade değil, bu yüzden bilmeden bir ilgisi olabilir nasıl doğru şekilde ayrıştırmak için. Ve ne kadar uzun bir dize konuşuyorsun? – Dispersia

+0

Dize verilerim yaklaşık 1 milyon karakter içeriyor. Çalışmıyorsa, sadece 9-10 saniye sürüyor. –

+0

, normal ifadeyi kullanmamak için daha hızlı olabilir, ancak ayrıştırmanın kendisini el ile halletmeniz yeterlidir. –

cevap

0

Tamam, bu Regex birden fazla sözcük için çalışıyorum (İşte 2 kelime koşulu kullanıyorum) AND operatörü ve hızı, eski RegEx'le karşılaştırıldığında @Dispersia'nın yanlış bir şekilde RegEx'e işaret ettiği gibi iyi. Hatta bu bir çalıştı ama İşte

(?i)(?m)^((?=.*\bword1\b)(?=.*\bword2\b)).*[\r\n]*$. 

sonucun ekran görüntüsü sonucu üretmek için sonsuza alarak o Strange: enter image description here