Próbuję podzielić ciąg reprezentujący XPath takich jak:Dzielenie ciąg na/kiedy nie wewnątrz []
string myPath = "/myns:Node1/myns:Node2[./myns:Node3=123456]/myns:Node4";
muszę podzielić na „/” (zwanego dalej „/” wykluczony z wyników , tak jak w przypadku zwykłego podziału na łańcuchy), chyba że "/" znajduje się w "[...]" (gdzie "/" nie zostanie podzielone, a także uwzględnione w wyniku).
Więc co normalny string[] result = myPath.Split("/".ToCharArray())
dostaje mnie:
result[0]: //Empty string, this is ok
result[1]: myns:Node1
result[2]: myns:Node2[.
result[3]: myns:Node3=123456]
result[4]: myns:Node4
results[2]
i result[3]
powinien zasadniczo być łączone i powinienem skończyć z:
result[0]: //Empty string, this is ok
result[1]: myns:Node1
result[2]: myns:Node2[./myns:Node3=123456]
result[3]: myns:Node4
Ponieważ nie jestem bardzo biegły w regex, Próbowałem ręcznie rekombinować wyniki w nowej tablicy po podziale, ale co mnie niepokoi to, że chociaż jest to trywialne, aby działało w tym przykładzie, regex wydaje się lepszym rozwiązaniem w przypadku, gdy staje się bardziej złożony xpaths.
Dla przypomnienia, mam spojrzał na następujące pytania:
Regex split string preserving quotes
C# Regex Split - commas outside quotes
Split a string that has white spaces, unless they are enclosed within "quotes"?
Chociaż powinny one być wystarczające w pomaganiu być z moim problemem, biegnę do kilku problemy/mylące aspekty, które uniemożliwiają mi udzielenie mi pomocy.
W pierwszych 2 linkach, jako początkujący w regex, trudno mi je interpretować i uczyć się. Szukają cytatów, które wyglądają identycznie pomiędzy parą lewą i prawą, więc tłumaczenie tego na [i] wprowadza mnie w błąd, a próba i błąd nie uczą mnie niczego, a raczej po prostu frustrują mnie bardziej. Rozumiem dość proste wyrażenie regularne, ale odpowiedzi na te pytania są nieco inne niż to, co obecnie rozumiem, nawet z wyjaśnieniem w pierwszym linku.
W trzecim łączu nie będę mieć dostępu do LINQ, ponieważ kod będzie używany w starszej wersji .NET.
Zgadzam się, że regex w połączonych pytań można tendencję do przytłaczać początkujących ... Lubię myśleć Jestem w połowie przyzwyczajony do regexu, kiedy muszę być, ale przyznaję, że to mi przeszkadza ... –