Aktywne Wpisy
edenptlg +590

Nacho_Libre +24
#sluchamzlastfm #sluchamzlastfm2 #muzyka #spotify #lastfm
Dzień dobry,
W ten niedzielny poranek zapraszam do cotygodniowego Waszego zestawienia najczęściej słuchanych albumów w serwisie last.fm w kończącym się tygodniu.
Słucham
Dzień dobry,
W ten niedzielny poranek zapraszam do cotygodniowego Waszego zestawienia najczęściej słuchanych albumów w serwisie last.fm w kończącym się tygodniu.
Słucham




"\{ARGS" + QString("(?:[(\d+),(\w+)?\])?").repeated(64) + "\}"czyli odpowiadającą np. napisowi takiemu jak ten:
z tym, że ciąg wyrazów może być dłuższy (maksymalnie 64 pary). Działało dobrze póki miałem 16 par, a teraz przy 64 dostaję brak zgodności i na http://regex101.com dostaję "catastrophic backtracking" opisane tutaj: https://www.regular-expressions.info/catastrophic.html - nie umiem jednak zrozumieć jak przerobić moją ekspresję... problem polega na tym, że nie wiem ile będzie argumentów w stringu. Wcześniejszy regex to po prostu "+" zamiast "repeated" ale wtedy nie mogłem pobierać argumentów z grup... myślę czy nie prościej zmienić podejście i bezpośrednio iterować sobie po stringu? będzie wolniej, szybciej?
EDIT: od c++11 masz raw stringo, żeby nie dostać p-------a z ``
@s_theCapt: podrzuć więcej caseów albo wyjaśnij jak ten format wygląda.
całość kończy się '}',
po środku masz jedną lub więcej parę cyfra-przecinek-słowo (najczęściej cyfra-przecinek-cyfra, pierwsza cyfra to rodzaj argumentu i "2" znaczy, że po przecinku będzie cyfra, a "10", że słowo bez spacji).
Format można opisać tak:
\{ARGS(?:[(\d+),(\w+)?\])+\}ale wtedy nie mogę iterować po argumentach więc ktoś mi poradził, że jeżeli to rozbiję i zamiast środkowej grupy dam(?:[(\d+),(\w+)?\])?tyle razy ile wynosi maksymalna ilość argumentów(?>[([0-9]+)\,([0-9,a-z,A-Z]+)\])i dał do tegoif(x.startsWith("{ARGS") && x.endsWith("}")). W ten sposób łapie to o co chodzi i jest eszcze szybkie. Możnaby sprawdzać w 1 regexpie ale masz dodatkowe grupy i wydajność szlag trafi.EDIT zobacz sobie w regex101, różnica jest subtelna ale powinieneś być w stanie iterować w przeciwieństwie do twojego regexa.