Regex.Split() zostawia elementy w grupach

0

Witam,
Mam bardzo krótke pytanko.
Mam następujący RegEx \\textbf\{Zadanie \d+\} ?(\w\d)?\\\\ który powinien mi "zmetchować" np to: \textbf{Zadanie 78} m8\\, \textbf{Zadanie 79} c8\\ lub to: \textbf{Zadanie 80} s8\\ albo to \textbf{Zadanie 70} c5\\. Wszystko działa jak powinno ale... Po wywołaniu <MojRegexObj>.Split(text) dostaję prawidłowy string ale poza tym dzieją się rzeczy śmieszne. :/

Wygląda na to jakby Split() na regexie zostawiał to co jest w grupach jako osobny split. Np.\textbf{Zadanie 78} m8\\ jest dzielone na m8, TutajZawartośćMatch'a Jest to strasznie dziwne, nigdy się z czymś takim. :D

Dziękuję za każdą pomoc.
Jest to szybkie pytanie więc po udzieleniu odpowiedzi możecie je usunąć.

0

Ale w jaki sposób chcesz dzielić string przy użyciu takiego regexpa? Ciężko mi sobie nawet wyobrazić jak miałby wyglądać rezultat takiej operacji.
Zazwyczaj .Split się używa do dzielenia stringów po prostych regexpach jak np [/-] żeby podzielić string typu "2020/10/20" albo "2020-10-20" po jednym z dwóch dopuszczalnych znaków na składowe "2020", "10" i "20".

Nie chcesz czasem użyć po prostu .Matches żeby znaleźć dopasowania regexpa?

0

Trochę nie rozumiem intencji

Jeżeli twoim założeniem jest podzielenie teksu za pomocą regexu
JakisTeksAJakisTextA REGEX JakisTextBJakiśTextB

to var splitedArray = Regex.Split("JakisTeksAJakisTextA REGEX JakisTextBJakiśTextB","REGEX")
Zwróci ci dwuelementową tablice
Array[0] = "JakisTeksAJakisTextA "
Array[1] = "JakisTextBJakiśTextB"

0

wygląda na to że użycie grup w regexpie podanym do Split dodaje zawartość grup do wyniku, usuń grupy (nawiasy) z regexpa i wszystko działa chyba tak jak chcesz:

new Regex(@"\\textbf\{Zadanie \d+\} ?\w\d\\\\").Split(@"przed\textbf{Zadanie 78} m8\\po")

wyjście:

["przed", "po"]

1 użytkowników online, w tym zalogowanych: 0, gości: 1