Is it possible using Regex.Replace to match a string, but only replace a portion of that matched string? Some way to mark part of the string that should be replaced with the replacement text parameter?
1 Answer
You can use groups to insert parts of the original string, or you can use lookbehind and lookahead.
Examples
Using Groups:
someString = Regex.Replace(someString, @"(before)content(after)", "$1new content$2");
Using lookaround:
someString = Regex.Replace(someString, @"(?<=before)content(?=after)", @"new content");
4 Comments
Winforms
Looking forward to the examples :)
Winforms
Works but instead of \1 you need $1
Winforms
@SLaks: Why do you have the ?<= and the ?=, without them everything works perfect. With them it doesn't work.
SLaks
@Winforms: Those are lookaround assertions. It works for me:
Regex.Replace("abc", @"(?<=a)b(?=c)", "q") prints aqc.