2010-12-03 10 views
9

Więc mój ciąg wygląda następująco:Jak dopasować wszystko do drugiego wystąpienia postaci?

Basic information, advanced information, super information, no information 

Chciałbym uchwycić wszystko aż do drugiego przecinka tak mam:

Podstawowe informacje, zaawansowane informacje

Jaki byłby regex za to ?

Próbowałem: (.*,.*), ale mam

Podstawowe informacje, zaawansowane informacje, super informacje,

+0

do i włącznie lub do, ale nie wliczając w to? –

Odpowiedz

13

To uchwycić maksymalnie ale nie w tym drugim przecinkiem: Tłumaczenie

[^,]*,[^,]* 

angielski:

  • [^,]* = tyle znaków non-przecinek możliwym

  • , = przecinek

  • [^,]* = tyle znaków non-przecinek możliwym

[...] to klasa postaci. [abc] oznacza "a lub b lub c", a [^abc] oznacza cokolwiek oprócz a lub b lub c.

+0

@skajfes: tak, przetestowałem to (i poprzedni też). –

+0

Przepraszam, byłem trochę szybki na spuście. Usunąłem głos. – skajfes

+0

@skajfes: dzięki. Ten stary był niepotrzebnie skomplikowany - nie jestem pewien, dlaczego użyłem negatywnego twierdzenia w drugiej połowie, gdy zwykła stara negatywna klasa działa równie dobrze. –

3

można spróbować ^(.*?,.*?), Problemem jest to, że jest chciwy i .* mecze maksymalną ilość znaków. ? behind * zmienia zachowanie na nie-chciwe.

Można również umieścić nawias wokół każdego. *? segment, aby przechwycić łańcuchy oddzielnie, jeśli chcesz.

+0

Prawie działa, dostaje mnie: Podstawowe informacje, zaawansowane informacje, (przecinek na końcu) – Micor

+1

To również pasuje do drugiego przecinka. Nie wiadomo, czy to jest ok, czy nie - mówi, że chce "Podstawowe informacje, zaawansowane informacje", ale być może oznacza to, że schwytany przez grupę przechwytującą, a nie schwytany przez cały regex. –

+0

Masz nawias, który powinien przechwycić wszystko oprócz przecinka na końcu. – skajfes

Powiązane problemy