Aktywne Wpisy
Opad4991 +259
Siema nocna.
Właśnie siedzę przy ojcu który powoli umiera w stanie agonalnym. Zmiana warty z matką o 2:00 w nocy. Dajcie plusa na pocieszenie.
Właśnie siedzę przy ojcu który powoli umiera w stanie agonalnym. Zmiana warty z matką o 2:00 w nocy. Dajcie plusa na pocieszenie.
Zagadka regexowa
Plik(i) w ktorych mamy wiele wystapien pewnego strina o przykladowym formacie
ayy\n(lmao\d\n)+
czyli przykladowo
ayy
lmao1
lmao2
lmao3
chcemy zamienic na
ayy
ehh(lmao\d)
ehh(lmao\d)
ehh(lmao\d)
ilosc powtorzen linii lmao\d jest nieznana, ale dodatnia
ayy musi koniecznie byc pierwsza linia
Ktos wie jaki regex zlapie i zamieni taki string?
sed 's/\(lmao\d\)/ehh(\1)/'
dd
lmao1
lmao2
ayy1
lmao1
lmao2
lmao3
ayy1
lmao1
lmao2
lmao3
....
#!/usr/bin/python
import re
with open("file") as f:
data = f.read()
d = dict(re.findall('(ayy\d)\n((?:lmao\d\n)+)', data, re.M))
for x in d:
list_lmao = d[x].split()
....
....
Nie wiem czy o to ci chodziło.
Wyciągasz pojedyncze linie możesz użyć od razu re.replace..
Rozwiązań jest masa łatwiej było by jak byś podał lepsze dane, jeśli "ayy" jest zawsze jest stałym literałem, a konstrukcja lmao jest też stała
sed 's/\(lmao[0-9]\+\)/ehh(\1)/'
@pingwindyktator
W pythonie to nie problem (tak to ostatecznie rozwiązałem). Raczej byłem ciekawy czy w ogóle da się to zastąpić sedem.
To niestety zamieni każdą linie lmao, a mi zależy konkretnie na tych które są poprzedzone linia ayy( n linii lmao bezpośrednio po jednej linii ayy).
arribay lmao
ewentualnie wykorzystaj awk, perl, ostatecznie basha czyli połączenie wszystkiego jeśli nie chcesz perla :)
w sed można tworzyć zmienne i łączyć wyszukiwania. polecam do seda, awk, regex, etc
do testowania polecam stronę regex101.com - ma fajny debuger regexow + fajnie rozwija składnie danego regexa