kiedy wszystko inne zawiedzie, mozna uzyc dwoch prastarych metod..
- zamienic odrzut na dopasowanie i sprawdzic po-fakcie:
(Translate()?"([^"]*)" - $1 to nic albo 'Translate(', $2 to zlapany tekst, zakladajac ze wewnatrz stringa nikt nie escape'owal cudzyslowu.. po matchu prosty test: jesli $1 == translate to olac i szukac dalej od miejsca zakonczenia trafienia
- napisac z palca... klasyczna negacje ciagu..
([(]|[e](|[t]e(|[a]te(|[l]ate(|[s]late(|[n]slate(|[a]nslate(|[r]anslate(|[T]ranslate()"([^"]*)"
..negacja dosc rozbudowana zawsze wychodzi, mam nadzieje ze sie nie walnalem.. niestety, jesli silnik regex nie dostarcza operatora negacji, to trzeba sie dokaldnie w ten sposob rozpisac.. trafienie gwarantuje ze wyrazenie negowane nie wystapilo w dopasowaniu, a wiec w $1 beda 'smieci' nie bedace fraza 'Translate(', zas $2 to zlapany wyraz
mam nadzieje jednak ze w engine'ie regex .net'a jest operator negacji albo prostszy sposob na ominiecie:)