2012-04-26 37 views
13

Próbowałem różnych sposobów uciec od nawiasów za pomocą wyrażeń regularnych w JavaScript, ale nadal nie mogę sprawić, by działało.Regex, aby uciec od nawiasów

Jest to ciąg:

"abc(blah (blah) blah()...).def(blah() (blah)..() ...)" 

chcę to być wykryte:

abc().def() 

Za pomocą tego kodu, zwraca false.

str.match(/abc\([^)]*\)\.def\([^)]*\)/i); 

Czy możesz mi powiedzieć, dlaczego mój regex nie działa?

+1

Jesteś pewien? Zwraca '[" abc (bla bla bla) .def (bla bla ...) "] dla mnie. – Blender

+0

Przykro mi, chłopaki, właśnie zredagowałem wpis. Zasadniczo ma zagnieżdżone nawiasy. – RoundOutTooSoon

+2

Co masz na myśli mówiąc, że chcesz "zostać wykryty"? Masz na myśli, że chcesz wyciągnąć tekst 'abc(). Def()' i coś z nim zrobić? Lub po prostu chcesz, aby twój regex pasował do łańcucha "abc (blah (blah) ... etc" – alan

Odpowiedz

12

To wyrażenie regularne dopasuje ciąg podałeś:

(abc\().+(\)\.def\().+(\)) 

i stosując wsteczne $1$2$3 będzie produkować abc().def()

Albo po prostu użyć tego, jeśli nie chcesz odniesień powrotem:

abc\(.+\)\.def\(.+\) 
0

K ... Oto pomysł ...

abc(blah (blah) blah()).def(blah() (blah).blah()) 

Użyj regexp jak ten

var regExp1 = \^([a-z])*\(\ig; 

będzie pasować

abc(

następnie użyć

var regExp2 = /\)\./ 

będzie ona pasować do

")." 

w ciągu ..

następnie podzielić rzeczywisty ciąg tak, że staje się

def(blah() (blah).blah()) 

powtarzać aż do wyrażenia regularnego nie może znaleźć

regExp2 

i dodać nawias zamykający .. Najprostszym rozwiązaniem, jakie mogłem wymyślić ... Mam nadzieję, że pomoże ..

Powiązane problemy