Aşağıdaki Regexp'i var.Java RegExp grubu olumsuzlaması mümkün mü? <code>[^1]</code> illeagal çünkü <code>(["'])(\1|[^1])+1</code></p> <p>Açıkçası derlenmiş edilemedi:
Eşleşen grubu olumsuzlamak mümkün mü?
Aşağıdaki Regexp'i var.Java RegExp grubu olumsuzlaması mümkün mü? <code>[^1]</code> illeagal çünkü <code>(["'])(\1|[^1])+1</code></p> <p>Açıkçası derlenmiş edilemedi:
Eşleşen grubu olumsuzlamak mümkün mü?
Olumlu veya olumsuz karakter sınıflarında geri başvuruları kullanamazsınız.
Ama kullanarak istediğini elde edebilirsiniz negatif lookahead assertions:
(["'])(?:\\.|(?!\1).)*\1
Açıklama:
(["']) # Match and remember a quote.
(?: # Either match...
\\. # an escaped character
| # or
(?!\1) # (unless that character is identical to the quote character in \1)
. # any character
)* # any number of times.
\1 # Match the corresponding quote.
Diğer soru üzerine, bunun işe yaramayacağını söylediniz. '(["']) (\\\ 1 |.) +? \ 1'? Ya da soldan sağa eşleşmesi gerekiyor mu? Yoksa problemi burada mı kaçırıyorum? JavaScript: –
@FelixKling: Doğru, parantezin doğru yere taşınması sorunu çözüyor.Bizim, Ademiban'ın cevabını geri alabiliyor muyuz? –
Geri almayı tercih etti.Tekrarın geri dönüşünü engelleyeceğinden, çözümün muhtemelen daha iyi. –
, eşleştirmeye çalıştığınız metin nedir? Regex'in biraz kafa karıştırıcı. – beerbajay
Soru şu, diğer tatlarda/dillerde mümkün mü? Böyle bir yapının, bir yakalama grubunun birden fazla karakter içerebileceğinin bir anlamı olmadığını düşünebilirim, bu yüzden [^ \ 1] 'bu karakterlerin bir listesi olurdu ... ama bu sadece benim düşüncem. Aynı zamanda regex motorunun önceden bilmesi gereken * karakterleri bilmesi de olabilir. [\ 1] çalışıyor mu? –
Bunu yalnızca ['regular-expression.info'] 'da bulduğum (http://www.regular-expressions.info/brackets.html): *" Referanslar ayrıca bir karakter sınıfında kullanılamaz. "\ 1' (a) [\ 1b] gibi regex cinsinden ifadeler çoğu regex çeşidinde sekizli bir kaçış olarak yorumlanacaktır.Bu nedenle bu regex bir 'a' ile eşleşecek, ardından' \ x01' veya 'b' ile eşleşecektir. Düzenli ifadeler hakkında daha fazla bilgi sahibi olmak istiyorum, [* Jeffrey Friedl tarafından Mastering Düzenli İfadeler *] (http://shop.oreilly.com/product/9780596528126.do). –