Wpis z mikrobloga

czy jest tu jakiś mirek bądź mirabelka, który/a potrafi posługiwać się wyrażeniami regularnymi w notepad++?

mam oto taki zestaw danych:

"AutoSave_0007.sav"
{
"root" "0"
"size" "0"
"localtime" "0"
"time" "0"
"remotetime" "1490894920"
"sha" "0000000000000000000000000000000000000000"
"syncstate" "1"
"persiststate" "2"
"platformstosync2" "-1"
}
"AutoSave_0007_640x360.bmp"
{
"root" "0"
"size" "0"
"localtime" "0"
"time" "0"
"remotetime" "1490894920"
"sha" "0000000000000000000000000000000000000000"
"syncstate" "1"
"persiststate" "2"
"platformstosync2" "-1"
}

takich par w pliku mam ok 200 i każdą z nich muszę doprowadzić do takiego stanu:

"AutoSave_0007.sav"
{
"root" "0"
"size" "442317"
"localtime" "0"
"time" "0"
"remotetime" "1490894920"
"sha" "354D0B4ED5D21B9AFEFC3309D8444136EC975630"
"syncstate" "3"
"persiststate" "0"
"platformstosync2" "-1"
}
"AutoSave_0007_640x360.bmp"
{
"root" "0"
"size" "691254"
"localtime" "0"
"time" "0"
"remotetime" "1490894920"
"sha" "BB60A465A5644E03EAE52F1812608332FBB07350"
"syncstate" "3"
"persiststate" "0"
"platformstosync2" "-1"
}

z tego co udało mi się ustalić to można to zrobić z użyciem wyrażeń regularnych w notepad++
http://seo-z.pl/wyrazenia-regularne-notepad/

jednak taka fraza

Szukaj: [^\(]*\(?([^\)]*)\)?
Zamień na: \1

mi nic nie mówi ( ͡° ʖ̯ ͡°)

jakieś pomysły jak to zrobić?
#kociochpyta #informatyka #programowanie #notepad
  • 18
@sebool12: co konkretnie ma się zmienić i na co? Jedyna różnica jaka widzę na pierwszy rzut oka to uzupełnione SHA, ale tego samym wyrażeniem regularnym nie zrobisz. Opisz słowami, jaki efekt chcesz osiągnąć.

Edit: widzę że inne pola tez są uzupełnione w tej drugiej parze - jeśli chcesz uzupełnić te wszystkie pola to przyda Ci się coś dużo mocniejszego niż notepad++, potrzebujesz narzędzia które w ogóle te dane pobierze - np.
@asunez: potrzebuje zmienić pola size, sha , syncstate i persiststate
wszystkie pliki sav będą miały tą samą wartość size i sha
tak samo bmp, ale oczywiście inną niż sav
syncstate i persiststate zawsze ma być 3 i 0 (dla sav i bmp)
muszę podmienić pliki w chmurze steam na jeden zapis gry, abym mógł wyczyścić syf z tego pliku - inaczej zostają wpisy z tymi zerami

gdyby nie różna wartość przy
@sebool12: teraz Ci z tym nie pomogę bo z tel pisze, ale wieczorem pewnie będę miał chwile to mogę spróbować coś skleić z regexem. Jakby Ci się udało to napisz mi tylko, żebym nie siedział nad rozwiązanym problemem :P
@sebool12: Dla sha możesz zrobić to np. tak (wersja dla bmp):
Szukany tekst: (\.bmp"\s(.*\s+){7}"sha"\s)("0+")
Zamień na: $1"BB60A465A5644E03EAE52F1812608332FBB07350"
Dla sav musisz zamienić oczywiście "bmp" na "sav" i wartość sha na taką jaką potrzebujesz. I pamiętaj aby tryb szukania ustawiony był na wyrażenia regularne.

Dla size i pliku bmp:
Szukany tekst: (\.bmp"\s(.*\s+){3}"size"\s)("0")
Zamień na: $1"691254"

Syncstate dla obu plików:
Szukany tekst: ({(.*\s+){7}"syncstate"\s)(".")
Zamień na: $1"3"

Persiststate również dla obu plików:
Szukany tekst: ({(.*\s+){8}"persiststate"\s)(".")
@sebool12: Na screenie masz "1 occurrence was replaced", więc widocznie miałeś kursor gdzieś na końcu pliku i tylko ostatni ciąg złapało. Zaznacz jeszcze "wracaj na początek pliku" powinno zamienić wszystko. U mnie działa prawidłowo.
@sebool12: Tak, to wina wykopu. Zamienił wiele spacji na jedną, a regexy są prawidłowe tylko dla przypadku z jedną spacją. Musisz tylko dodać znak + po \s, czyli regexy będą takie:
(.bmp"\s(.*\s+){7}"sha"\s+)("0+")
(.bmp"\s(.*\s+){3}"size"\s+)("0")
({(.*\s+){7}"syncstate"\s+)(".")
({(.*\s+){8}"persiststate"\s+)(".")

Potwierdź czy teraz działa.