Help:CirrusSearch/RegexTooComplex/tr

sözdizimi, Lucene'nin lehçesi ile yazılmış oldukça verimli düzenli ifade aramaları uygular. Verimlilik nedeniyle, bu normal ifadelerin ne kadar karmaşık olabileceğinin bir sınırı vardır.

Hangi sözdizimi karmaşık kabul edilir?
Karmaşıklıktaki en büyük artış, determinizm olmama ve ardından tekrarlamadan kaynaklanır. Şuna benzer:

insource:/[ac]*a[ac]{50,200}/

kısmı deterministik değildir ve  bir yinelemedir. Öte yandan bu daha iyi:

insource:/[ac]*a[de]{50,200}/

Çünkü,   ile çakışmaz. Hâlâ karmaşık ve hâlâ tam olarak hızlandırılamıyor, ancak tamamen reddedilmiyor ve onu eşleştirmeye çalışacağız.

Genellikle tekrar, buna değer olduğundan daha fazla karmaşıklık ekler. Tekrarlamak daha iyi, yani:

insource:/[ac]*a.*[^"]+\"/

is much less complex than:

insource:/[ac]*a.*[^"]{50,100}\"/

Why?
Lucene compiles regular expressions to DFAs. It does this by converting the regular expressions to NFAs and then converting those to DFAs. The worst case complexity for that operation is exponential on the number of states in the NFA and the NFA's number of states is related to the. Non-determinism followed by repetition followed by repetition triggers that exponential state growth. We limit the number of states to 20,000 to prevent them from eating all of our memory.