Article View: pl.comp.lang.perl
Article #1205Re: /\+(?:\(.*?\)|.*?)(?:$|(?=\+))/g - off topic
From: Adam Karpierz
Date: Fri, 10 Apr 1998 11:15
Date: Fri, 10 Apr 1998 11:15
57 lines
2866 bytes
2866 bytes
Qrczak napisal:
[...]
> Chciałbym się spytać, czy coś takiego jak w Temacie ma
> obowiązek zadziałać tak jak chcę. W praktyce u mnie
> działa, ale nie wiem, czy można zakładać, że tak będzie
> zawsze...
>
> Chodzi mi mianowicie o to "\(.*?\)|.*?". Kolejność obu
> możliwości ma znaczenie! Chcę żeby w przypadku kiedy
> zaczynamy od "+(", wziąć wszystko aż do następnego
> ")+", łącznie z ewentualnymi wewnętrznymi "+".
> Teoretycznie on mógłby dopasować to do drugiego
> wariantu: ".*?", i zatrzymać się na pierwszym "+" w
> nawiasie, jednak tego nie robi - i dobrze! ale może
> któraś wersja zacznie.
>
> Mogę oczywiście zamienić to na "\(.*?\)|[^(].*?|" albo
> nawet na "\((?:[^)]|\)(?!\+))*\)|[^+(][^+]*|", nie ufając
> ".*?" i mając pewność, że zawsze będzie dobrze (o ile
> się nie pomyliłem), ale, jak widać, komplikując wyrażenie.
> Co radzicie?
>
> A może zaproponujecie lepszą metodę na podzielenie
> napisu postaci:
> 1+222+(3+(5)6+7)+8
> na:
> 1 222 (3+(5)6+7) 8
> niż:
> map { s/^\+//; różne_inne_rzeczy; }
> ("+" . ów_napis) =~ /powyższe_wyrażenie/g
> ?
>
> BTW: W tych nawiasach będą komendy basha. Przyjąłem
> założenie, że po prostu nie może w nich wystąpić ciąg ")+".
> Lepiej by było rozpoznawać zagnieżdżenie nawiasów,
> czego nie da się załatwić jednym wyrażeniem
> regularnym, ale może macie pomysł, jak to w miarę prosto
> zrobić?
> Oczywiście nawiasy wyeskejpowane albo w cudzysłowach
> mają się nie liczyć, jak to w szelu. Załóżmy, że komenda
> jest poprawnie zbudowana. Pewnie jednak szkoda zachodu,
> ")+" można wyeskejpować jeśli ktoś przypadkiem będzie
> tego potrzebował...
Zaniemowilem z wrazenia... Calkiem powaznie mowie !
Qurczaku, juz nigdy nikomu nie powiem ze jest glupi
jak qura :))).
PS: Moze ktos da znac Pawlowi Gajdzie zeby juz nie szukal
zaciemniacza do Perla. Jest na www.qurczak.com.pl :).
Tyle ze nie darmowy :).
--
Pozdrawiam i zycze wszystkim Perlowistkom i Perlowiczom
Wesolych i Spokojnych Swiat (a Qurczakowi szczegolnie:)
Adam Karpierz
Technical Details
Message-ID:
<01bd6471$f5a2a140$81baccc2@karpierz.dyn.ml.org>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!not-for-mailReferences:
<Pine.LNX.3.96.980410093444.16675A-100000@qrnik.knm.org.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!not-for-mail From: "Adam Karpierz" <karpierz@inter.intertele.pl> Newsgroups: pl.comp.lang.perl Subject: Re: /\+(?:\(.*?\)|.*?)(?:$|(?=\+))/g - off topic Date: 10 Apr 1998 11:15:25 GMT Organization: Technical University of Wroclaw, Poland Lines: 58 Message-ID: <01bd6471$f5a2a140$81baccc2@karpierz.dyn.ml.org> References: <Pine.LNX.3.96.980410093444.16675A-100000@qrnik.knm.org.pl> NNTP-Posting-Host: ppp149.intertele.pl X-Newsreader: Microsoft Internet News 4.70.1161 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit