dj.drezyna Posted April 29, 2012 Report Share Posted April 29, 2012 Witam! Chciałbym wyszukiwać zmienne tekstowe w kodzie np. JavaScript, a nie jestem w stanie wymyślić do tego sposobu. Myślałem o pętli przechodzącej przez wszystkie linie i znaki danej linii ale nie jest to metoda idealna o czym dalej. Natomiast zupełnie nie mam pomysłu na jakąś formułę w RegExp, bo tutaj to nie działałoby w ogóle, bo np: /\'\.'/g zupełnie nie jest właściwe, ponieważ przy czymś takim jak: 'jestem Hand\'ym' nie działa. A co do sposobu pętli jest okej: var wynik = ''; var typ; var i = 0; var linie = document.getElementById('tekst').value.split("\n"); for (var linia=0;linia<linie.length;linia++) { linie[linia] = ' '+linie[linia]+' ';//nowa linia wynik += "\n"+linia+':'; var jeden = linie[linia].indexOf('\''); var dwa = linie[linia].indexOf('\"'); if (((jeden < dwa) && (jeden > -1) && (dwa > -1)) || ((jeden > -1) && (dwa == -1))) typ = 'jeden'; else typ = 'dwa';//alert(jeden+' '+dwa); for (var znak=0;znak<linie[linia].length;znak++) { if ((typ == 'jeden') || (typ == '')) { if ((linie[linia][znak] == '\'') && ((linie[linia][znak-1] != '\\') || (linie[linia][znak+1] == '\''))) { i++; typ = 'jeden'; wynik += znak+','; if (i == 2) { typ = ''; i = 0; } } } if ((typ == 'dwa') || (typ == '')) { if ((linie[linia][znak] == '\"') && ((linie[linia][znak-1] != '\\') || (linie[linia][znak+1] == '\"'))) { i++; typ = 'dwa'; wynik += znak+','; if (i == 2) { typ = ''; i = 0; } } } } } alert(wynik); ale nie zupełnie niestety, bo zapis: var ok = ''; nie wywoła błędu ale poprawny ze względu na składnię js zapis: var a = '\\'; //wpisane: \ lub var b = 'jestem sobie tekst \\'; //wpisane: jestem sobie tekst \ lub var c = 'jestem sobie tekst \\', a może nie\\'; // wpisane: jestem sobie tekst ', a może nie\ spowoduje zapis jedynie pierwszego apostrofu, a drugi zostanie pominięty, bo znak \' nie zamyka instrukcji, a tu jednak tak. I w tym momencie nie wiem jak sobie poradzić. Coś mi podpowiada mimo to, że najlepiej do tego nadałoby się jednak wyrażenie regularnie ale nie jestem w stanie go napisać. Bardzo dziękuję za czas poświęcony na zapoznanie się z postem, pozdrawiam, Marek Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link to comment Share on other sites More sharing options...
dj.drezyna Posted May 1, 2012 Author Report Share Posted May 1, 2012 Znalazłem coś takiego w internecie: /'[^'\\]*(?:\\.[^'\\]*)*'/ Działa ale marzy mi się zrozumienie jak działa te wyrażenie. Mógłby ktoś opisać co za co jest odpowiedzialne, bo ja np. nie rozumiem jak może znależć ciąg 'abc\'e' prawidłowo (a znajduje) bo przecież jest zaprzeczenie w postaci: [^'\\] Bardzo byłbym wdzięczny. Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link to comment Share on other sites More sharing options...
dj.drezyna Posted September 12, 2012 Author Report Share Posted September 12, 2012 Na początku znajduje apostorf, potem szuka znaków innych niż odwrotny ukośnik lub innych niż apostrof. (apostrof kończy łańcuch o ile nie jest poprzedzony znakiem uniku odwróconego ukośnika). Wyszukuje też wyrażeń uniku w postaci odwrotnego ukośnika i dowolnego znaku i jeśli jest - innego lub więcej znaków rożnych od znaku apostrofu lub znaku odwróconego ukośnika. Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.