Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Python - wyrażenie regularne.
Forum PHP.pl > Inne > Hydepark
artuross
Witajcie, mam takie problem, korzystam z edytora Sublime Text 2, który jest właśnie napisany w Pythonie i chciałbym sobie szybko sformatować kod, ale nie wiem jak ominąć ciągi znaków.
Żeby Wam to zobrazować pokażę to na kodzie:

  1. $string1 = 'Jakiś string z przykładową kropką, którą nie powinna zostać sformatowana';
  2. $string2 = DATADIR.SITEMAP.EXT; // docelowo: DATADIR . SITEMAP . EXT
  3. $string3 = 'Kolejny string, tym razem ma kilka kropek. I kolejna. A to już ostatnia.';



Teraz chciałbym, aby kropki NIE ZNAJDUJĄCE się w stringach nie zostały sformatowane, a kropki poza stringami zostały zamienione na _._ (gdzie _ to spacja), w tym przypadku DATADIR.SITEMAP.EXT powinno zostać zamienione na DATADIR . SITEMAP . EXT, a reszta kropek nie ruszona.

Nie znam sposobu na zrobienie tego, chodzi mi tylko o idee w jaki sposób zaznaczyć, że COŚ ma zostać znalezione, ale tylko, gdy nie znajduje się pomiędzy czymś (w moim przypadku ZAWSZE będą to ' i '). Wszystkie moje pomysły na znalezienie tego już testowałem, niestety, chyba nawet nie zbliżyłem się do rozwiązania problemu.

Będę wdzięczny za jakiekolwiek podpowiedzi. Pozdrawiam,
artuross

PS Wiem, że to Hydepark, wiem, że może wydawać się głupie to, co próbuję osiagnąć, ale chciałbym to zautomatyzować troszkę, a przy okazji kod wszędzie wyglądałby tak samo, bo kropka to tylko jeden z wielu przykładów dla zastosowania tego wyrażenia.
Crozin
Wyrażenia regularne są tu właściwie bezużyteczne. Musisz niejako stworzyć cały parser, który będzie wstanie określić co właśnie przetwarza (czy "." znajduje się w komentarzu, tekście czy może jest to element składni).
artuross
Korzystałeś z edytora i jesteś pewien? Gdy podaję, by wyszukał '.*?' zostają zaznaczone tylko stringi, a wartości pomiędzy nimi, które de facto też znajdują się pomiędzy ' i ' nie zostają zaznaczone.
Jeżeli mimo to nie da rady tak zrobić bez tworzenia parsera to dzięki za odpowiedź.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.