regex - póki nie wystąpi podany ciąg znaków

regex - póki nie wystąpi podany ciąg znaków
NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 430
0

Cześć!
Mam nieprzyjemność parsować baaardzo długiego string. Muszę użyć konstrukcji która od podanego początku będzie "pobierała" treść tak długo aż wystąpi podany ciąg naków. Wielkim skrócie:

Kopiuj
/poczatek_stringa[^ciag_znakow]*/

Niestety przy takim zapisie treść pobiera do wystąpienia któregokolwiek znaku a u mnie musi występować cały. Mógłby mi ktoś powiedzieć jaki magiczny znaczek muszę dodać aby działało to tak jak potrzebuję?
Pozdrawiam

Potat0x
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 372
0
Kopiuj
poczatek(.|[\n])*koniec
hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

Zamiast regexa zdecydowanie lepszym wyborem w tym wypadku będzie forma jakiegoś parsera strumieniowego.

NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 430
0

@hauleth: Szczerze powiem że nie wiem. Chociaż wydaje mi się że regex będzie lepszy ponieważ operacje na danym ciągu znaków wykonuję kilkukrotnie.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Ale czemu regex? o_O

Kopiuj
def getUntil(data, delimiter):
    y = data[:data.find(delimiter)]
#
x = 'ala ma kota sierotka ma rysia'
y = getUntil(x, 'rysia')
#
>>> 'ala ma kota sierotka ma '

Analogicznie dla każdego innego języka. Substring jest dużo "lżejszy" od regexpa. Serio, jeśli mozesz to nie używaj regexpów ;]

NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 430
0

Ponieważ muszę znaleźć to co jest między początkiem a końcem. Mam string w którym tak na prawdę nie wiem co się znajduje. Wiem tylko że muszą być 2 rzeczy. I jak te 2 rzeczy będą MNIEJ WIĘCEJ wyglądać. Więc nie widzę sensu używać substringa ani czegoś innego bo:
Jak podam za mało danych nie znajdzie mi konkretnego elementu
Jak podam dość dużo to tych substringów będę musiał pisać pińcet
Sam nie jestem jakimś wielkim zwolennikiem regex'a ale w tym wypadku nic innego się nie nada.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.