I’d like to do a Regex.Split on some separators but I’d like to keep the separators. To give an example of what I’m trying:
"abc[s1]def[s2][s3]ghi" --> "abc", "[s1]", "def", "[s2]", "[s3]", "ghi"
The regular expression I’ve come up with is new Regex("\\[|\\]|\\]\\["). However, this gives me the following:
"abc[s1]def[s2][s3]ghi" --> "abc", "s1", "def", "s2", "", "s3", "ghi"
The separators have disappeared (which makes sense given my regex). Is there a way to write the regex so that the separators themselves are preserved?
Use zero-length maching lookarounds; you want to split on
That is, anywhere where we assert a match of a literal
[ahead, or where we assert a match of literal]behind.As a C# string literal, this is
See also
Related questions
Example in Java