2016-04-08 16 views
-1

Ben Bu normal ifade $( (dize $ veya ( içeriyorsa, dize geçerli olacaktır) içeren herhangi bir dize reddetmek için kullanılan aşağıdaki normal ifadeYang: negatif lookahead eşdeğeri?

(?!.[$][(]).*. 

yazdı. Her neyse, bu çözüm java kullanarak çalışıyor, ancak yang ile çalışan ?! (negatif lookahead) kullanmadan başka bir çözüme ihtiyacım var.

Bu bağlantı da dize veya ( dışında bir yılı sonuna kadar takip eğer Bu $ ler sadece maçları

([^$]|[$]+[^($])*[$]* 

normal ifadeler kullanabilirsiniz nasıl kullanıcı düzenli ifade Yang https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#regexs

+2

. Negatif bir bakış açısı '(? fge

+0

"$ (' is '(? S)^(?!. * [$] [(]). * $' Içermeyen bir dizginin Java regex'i. Neden olumsuz bir bakış istemezsiniz? –

+0

'?! Negatif bir görünüm değil, olumsuz bir görünüm var.Nedene bakmak istemezsiniz? – Xufox

cevap

0

gösterileri .

+0

Teşekkürler, çözümünüz java ile çalışıyor, ancak Yang ile değil, kötü bir desen istisnası veriyor. Bu bağlantı, Yang ifadesiyle nasıl kullanabileceğiniz konusunda yardımcı olacak https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#regexs –

+0

@DaoudShaheen: Cevabı düzenledik. Yeni sürüm çalışıyor mu? – fabian

+0

Çok teşekkürler, çalışıyor ama oluyor ben mesela filtrenin 'a' bu yüzden (ya da, ben bunu nasıl. Ben eklemeyi deneyin $ tarafından filtre uygulamak istediğiniz (([^ $ için yeni bir karakter eklemek istiyorsanız ] | [$] + [^ ($)) ([^ a])) * $ ama işe yaramadı, herhangi bir fikrin var mı? –

0

Benim yaklaşım biraz karışık görünüyor: Burada kullandığınız _lookahead_ olumsuz olan ileriye dönük değil ama negatif

^([^$]+?|[^(]+?|.*?(?:\$[^(][^\$]*?))$ 

REGEX 101 DEMO.