🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

7 total messages Started by askibicki Fri, 24 Feb 2017 09:01
Pomoc przy zapytaniu GREP
#273730
Author: askibicki
Date: Fri, 24 Feb 2017 09:01
5 lines
1705 bytes
Mam problem z tekstem. Z prostym GREP-em sobie radzę ale tu mam bardziej złożony problem i nie wiem jak go ugryźć.

W długim tekście o blokowej strukturze (bloki zaczynają się tekstem aaaa i kończą bbbb) Wewnątrz takiego bloku jest czasami jeden, czasami kilka akapitów. Muszę wyszukać i zmienić kolor blokom, które zawierają ciąg ccccc.
Czyli generalnie muszę zaznaczyć ciąg od aaaa do bbbb zawierający ccccc. Jak zmienić mu kolor to wiem ale kompletnie nie mogę wpaść na pomysł jak taki blok całościowo wyszukać i zaznaczyć.
Mogę prosić o podpowiedź.
Re: Pomoc przy zapytaniu GREP
#273732
Author: marekwlodarz
Date: Sat, 25 Feb 2017 21:22
10 lines
2154 bytes
W dniu piątek, 24 lutego 2017 10:01:29 UTC+1 użytkownik aski...@gmail.com napisał:
> Mam problem z tekstem. Z prostym GREP-em sobie radzę ale tu mam bardziej złożony problem i nie wiem jak go ugryźć.
> 
> W długim tekście o blokowej strukturze (bloki zaczynają się tekstem aaaa i kończą bbbb) Wewnątrz takiego bloku jest czasami jeden, czasami kilka akapitów. Muszę wyszukać i zmienić kolor blokom, które zawierają ciąg ccccc.
> Czyli generalnie muszę zaznaczyć ciąg od aaaa do bbbb zawierający ccccc. Jak zmienić mu kolor to wiem ale kompletnie nie mogę wpaść na pomysł jak taki blok całościowo wyszukać i zaznaczyć.
> Mogę prosić o podpowiedź.

Jeśli kilka akapitów, to modyfikator (?-s) na początku, żeby nie kończył wyszukiwania na końcu akapitu. No i grupy wyszukiwania, czyli coś takiego mniej więcej:
(?-s)(?<=aaaa)(.+ccccc.+)(?=bbbb)
Pewnie trzeba będzie poeksperymentować, żeby dopieścić.
Re: Pomoc przy zapytaniu GREP
#273734
Author: askibicki
Date: Sun, 26 Feb 2017 09:45
34 lines
1623 bytes
> (?-s)(?<=aaaa)(.+ccccc.+)(?=bbbb)

Niestety to wyrażenie nic nie znajduje. Może nie do końca jasno opisałem problem. Tekst wygląda tak:
aaaa
dddd
dddd
bbbb
aaaa
ddddd
ddddd
ccccc
dddd
dddd
bbbb
aaaa
ddddd
ddddd
fffff
bbbb
aaaa
dddddd
ddddd
ccccc
dddd
ddddd
bbbb
daasdffasd
aaaa
dddddd
ddddd
ccccc
dddd
ddddd
bbbb
Re: Pomoc przy zapytaniu GREP
#273736
Author: askibicki
Date: Sun, 26 Feb 2017 09:53
34 lines
1964 bytes
> (?-s)(?<=aaaa)(.+ccccc.+)(?=bbbb)

Niestety ta konstrukcja nic nie znajduje. Wczytuję się w Twoją książkę (jak sądzę jesteś autorem "Grep w InDesign") i nie mogę znaleźć dobrego sposobu.
Może nie do końca dobrze przedstawiłem problem. Tekst wygląda tak:
aaaa
dddd
dddd
bbbb
     aaaa
     ddddd
     ddddd
     ccccc
     dddd
     dddd
     bbbb
aaaa
ddddd
ddddd
fffff
bbbb
     aaaa
     dddddd
     ddddd
     ccccc
     bbbb
daasdffasd
aaaa
dddddd
ddddd
bbbb

(wszystkie wiersze są nowymi akapitami) 

Zapytanie powinno wyszukać bloki takie, które zaczynają się ciągiem aaaa, kończą cięgiem bbbb i zawierają ciąg ccccc. Zaznaczyłem je wcięciem.
Re: Pomoc przy zapytaniu GREP
#273738
Author: Piotr Chamera
Date: Wed, 01 Mar 2017 09:48
47 lines
2560 bytes
nie mam InDesigna z grepem ale spróbowałem twojego tekstu w Emacsie i 
takie wyrażenie wydaje się działać:

\(aaaa[^\<aaaa\>]+?ccccc[^\<bbbb\>]+?bbbb\)

czyli szukamy ciągu, który zaczyna się od „aaaa”, potem zawiera dowolne 
znaki ale nie słowo „aaaa” (niezachłannie), potem mamy ciąg „ccccc”, 
potem dowolne znaki ale nie słowo „bbbb” (niezachłannie) i na końcu 
słowo „bbbb”. Może w ID da się coś analogicznego stworzyć...


W dniu 2017-02-26 o 10:53, askibicki@gmail.com pisze:
>> (?-s)(?<=aaaa)(.+ccccc.+)(?=bbbb)
>
> Niestety ta konstrukcja nic nie znajduje. Wczytuję się w Twoją książkę (jak sądzę jesteś autorem "Grep w InDesign") i nie mogę znaleźć dobrego sposobu.
> Może nie do końca dobrze przedstawiłem problem. Tekst wygląda tak:
> aaaa
> dddd
> dddd
> bbbb
>      aaaa
>      ddddd
>      ddddd
>      ccccc
>      dddd
>      dddd
>      bbbb
> aaaa
> ddddd
> ddddd
> fffff
> bbbb
>      aaaa
>      dddddd
>      ddddd
>      ccccc
>      bbbb
> daasdffasd
> aaaa
> dddddd
> ddddd
> bbbb
>
> (wszystkie wiersze są nowymi akapitami)
>
> Zapytanie powinno wyszukać bloki takie, które zaczynają się ciągiem aaaa, kończą cięgiem bbbb i zawierają ciąg ccccc. Zaznaczyłem je wcięciem.
>
Re: Pomoc przy zapytaniu GREP
#273739
Author: askibicki
Date: Sat, 04 Mar 2017 19:39
5 lines
1491 bytes
> \(aaaa[^\<aaaa\>]+?ccccc[^\<bbbb\>]+?bbbb\)

spróbuję to przełożyć na InDesignowego GREPa

Dziękuję bardzo
Re: Pomoc przy zapytaniu GREP
#273740
Author: Piotr Chamera
Date: Mon, 06 Mar 2017 11:40
35 lines
2023 bytes
W dniu 2017-03-04 o 20:39, askibicki@gmail.com pisze:
>> \(aaaa[^\<aaaa\>]+?ccccc[^\<bbbb\>]+?bbbb\)
>
> spróbuję to przełożyć na InDesignowego GREPa

To wyżej to moja pomyłka, na twoim przykładzie zadziałało tylko przez 
przypadek :)

jest równoważne takiemu prostszemu wyrażeniu

\(aaaa[^a]+?ccccc[^b]+?bbbb\)

takie coś dopasuje prawidłowo (tzn bez pierwszego aaaa)

aaaa
vvv
aaaa
xxx
ccccc
yyy
bbbb

ale jeśli między aaaa i bbbb mogą wystąpić litery a i b
(jak w poniższym przykładzie), to już nie zadziała

aaaa
xxx
aaaa
cads
ccccc
cbsd
bbbb

Nie wiem jak zanegować występowanie całego słowa w regexpie...
jakieś pomysły?
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads