c# - Get un-prefixed/un-escaped text with RegEx -
i have following input text:
a b c d e \f g h jkl \m and mach characters without \ prexix, each of characters individually. basically, match, i'd a, b, c, d, e, g, h, i, j, k , l, f , m not passing because prefixed/escaped.
i got far
([^\\]([a-z]{1})) which works not expected: - a ignored, because there nothing before (and testing backslash) - each letter matched space before - jkl matches j space before, , kl 1 string.
i have tried different other variations parantheses not successful that.
the negated character class [^\\] consuming pattern matches text, adds match value , advances regex index end of match.
use non-consuming negative lookbehind:
(?<!\\)[a-z] ^^^^^^^ see regex demo. being non-consuming pattern, (?<!\\) checks if there backslash before ascii uppercase letter, , if there any, engine fails match. if there \, letter matched (while backslash remains missing in match value).
c# code:
var results = regex.matches(s, @"(?<!\\)[a-z]") .cast<match>() .select(m => m.value) .tolist();
Comments
Post a Comment