|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor: |
|
Alati teme | Način prikaza |
17. 02. 2012. | #21 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
^ Ruski alfabet nema J i Ć, zato zeza.
BTW: http://rubular.com/r/X5ZXPMBqQl Ali to je Ruby endžin ispod, ko zna da li to radi u Win32 ili šta već tera taj C++.
__________________
blog Poslednja izmena od jablan : 17. 02. 2012. u 23:43. |
17. 02. 2012. | #22 | |
nedovoljno naspavan
Na probnom radu
Datum učlanjenja: 25.03.2011
Poruke: 21
Hvala: 7
1 "Hvala" u 1 poruci
|
Koliko sam razumeo, po defaultu C++ standard regex (iplementacija uzeta od Boost-a) koristi ECMAScript "gramatiku", to je valjda nesto slicno Perl-u?
Citat:
E sad ovi "flagovi" mogu da se menjaju ako postavim neki drugi kao paramatar u konstruktoru regex-a, samo ne znam da li ce biti neke razlike posto sam negde procitao da ovaj ECMAScript sadrzi sve sto i ostali. |
|
17. 02. 2012. | #23 |
expert
Grand Master
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
|
я vidiš na to nisam obraćao pažnju
|
18. 02. 2012. | #24 |
nedovoljno naspavan
Na probnom radu
Datum učlanjenja: 25.03.2011
Poruke: 21
Hvala: 7
1 "Hvala" u 1 poruci
|
Ljudi treba mi zamena za word boundari \b, nešto me ovo zeza kad se ukombinuje sa Unicode karakterima. Gledao sam nešto na wikipediji, ali ne razuem njihov "kod":
Kôd:
[(?<=\\W)(?=\\w)|(?<=\\w)(?=\\W)] Ako može neko da malo pojasni o čemu se radi? Prevod? Hvala. |
18. 02. 2012. | #25 |
banned
Professional
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
|
?<= positive lookbehind
?= positive lookahead http://www.regular-expressions.info/lookaround.html Pokušaj npr. [\u0400-\u04FF]+ http://www.regular-expressions.info/unicode.html Ili npr. sve osim razmaka, tačke, zareza... [^\s.,]+
__________________
Don't look at me; I'm lost too. “If you can't dazzle them with brilliance, baffle them with bul*s**t.” Poslednja izmena od Br@nkoR : 18. 02. 2012. u 21:56. |
"Hvala" Br@nkoR za poruku: |
18. 02. 2012. | #26 |
nedovoljno naspavan
Na probnom radu
Datum učlanjenja: 25.03.2011
Poruke: 21
Hvala: 7
1 "Hvala" u 1 poruci
|
Da li sam dobro skapirao?
Kôd:
kod: [(?<=\\W)(?=\\w) prevod: ako je pre mene ne-alpfanum.karakter a posle mene alpfanum.karakter = ISTINA kod: |(?<=\\w)(?=\\W)] prevod: ili ako je pre mene alpfanum.karakter a posle mene ne-alpfanum.karakter = ISTINA Poslednja izmena od morando : 18. 02. 2012. u 22:02. |
18. 02. 2012. | #27 |
nedovoljno naspavan
Na probnom radu
Datum učlanjenja: 25.03.2011
Poruke: 21
Hvala: 7
1 "Hvala" u 1 poruci
|
Sad sam probao nesto da stavim umesto \b :
Kôd:
([\\u0400-\\u04FF])([^\\u0400-\\u04FF])[(?<=\\2)(?=\\1)|(?<=\\1)(?=\\2)] moja_rec [(?<=\\2)(?=\\1)|(?<=\\1)(?=\\2)] Da nisam pogresio sa \1 i \2? \1 koliko razumem se odnosi na izraz u prvoj zagradi a \2 za izraz u drugoj zagradi? Jel? Kôd:
\1 =>([\\u0400-\\u04FF]) \2 =>([^\\u0400-\\u04FF]) Poslednja izmena od morando : 18. 02. 2012. u 23:41. |
18. 02. 2012. | #28 |
banned
Professional
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
|
Nisam baš vešt u objašnjavanju, a i ne znam C++ (nešto malo) pa tako nisam siguran, pišem na osnovu onoga što znam iz php, js...
(?<!\w)(?=\w) ili kao u tvom primeru (?<=\\W)(?=\\w) je zamena za \b na početku stringa (?<=\w)(?!\w) odnosno (?<=\\w)(?=\\W) je zamena za \b na kraju stringa (?<=\\W)(?=\\w) pronađi "karakter" ispred koga je ne-alfanumerički karakter i iza koga je alfanumerički karakter (?<=\\w)(?=\\W) pronađi "karakter" ispred koga je alfanumerički karakter i iza koga je ne-alfanumerički karakter Pa tako umesto \bSUBJECT\b može se napisati (?<=\\W)(?=\\w)SUBJECT(?<=\\w)(?=\\W) A (?<=\W)(?=\w)|(?<=\w)(?=\W) bi trebalo da pronađe sve "word boundaries" u tekstu. http://www.regular-expressions.info/wordboundaries.html A [] pretstavljaju Character Classes: http://www.regular-expressions.info/charclass.html Pa bi tako: [(?<=\\W)(?=\\w)|(?<=\\w)(?=\\W)] Pronađi jedan od karaktera iz grupe u zagradama [], dakle pronađi ( ili ? ili < ili = ili \W ili ... A za backreference: http://www.regular-expressions.info/brackets.html i mislim da ih nije moguće koristiti unutar [] (character Classes)
__________________
Don't look at me; I'm lost too. “If you can't dazzle them with brilliance, baffle them with bul*s**t.” Poslednja izmena od Br@nkoR : 18. 02. 2012. u 23:45. |
"Hvala" Br@nkoR za poruku: |
19. 02. 2012. | #29 | |
nedovoljno naspavan
Na probnom radu
Datum učlanjenja: 25.03.2011
Poruke: 21
Hvala: 7
1 "Hvala" u 1 poruci
|
Aha, sad vidim gde sam pogresio. Probao sam sad ovo i radi ovde.
Ali u VS-u moram da dodam plus po jedan '\' da mi ne bi reisformatirao pattern jer M$ kompajler takodje koristi taj karakter za njegove "metakaraktere/escape seq." (kako da ih nazovem vise), pa mi regex izbacuje exception: Citat:
Kôd:
(?<![\\u0400-\\u04FF])MOJA_REC_KOJU_TESTIRAM(?![\\u0400-\\u04FF]); sa jednim '\': sa dva '\': Za oba je syntax error exception. Poslednja izmena od morando : 19. 02. 2012. u 00:56. |
|
19. 02. 2012. | #30 | |
nedovoljno naspavan
Na probnom radu
Datum učlanjenja: 25.03.2011
Poruke: 21
Hvala: 7
1 "Hvala" u 1 poruci
|
Sad sam probao nesto, izgleda da std::regex ne podrzava "lookaround".
Kôd:
#include <iostream> #include <string> #include <regex> int main() { try { std::string str = "Pera kojot, super genije."; std::regex pattern("(?<![a-zA-Z])[a-zA-Z]+(?![a-zA-Z])"); const std::sregex_token_iterator end; std::sregex_token_iterator ti(str.begin(), str.end(), pattern); for(; ti != end; ++ti) { std::cout << (*ti) << std::endl; } } catch(const std::exception& e) { std::cout << e.what() << std::endl; } std::cin.ignore(); return 0; } Citat:
Poslednja izmena od morando : 19. 02. 2012. u 01:26. |
|
Alati teme | |
Način prikaza | |
|
|