tags:

views:

38

answers:

1

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?

+5  A: 

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");
SLaks
Looking forward to the examples :)
Winforms
Works but instead of \1 you need $1
Winforms
I will accept when it lets me
Winforms
+1 I had no idea you could do this, nice!
northpole
@SLaks: Why do you have the ?<= and the ?=, without them everything works perfect. With them it doesn't work.
Winforms
@Winforms: Those are lookaround assertions. It works for me: `Regex.Replace("abc", @"(?<=a)b(?=c)", "q")` prints `aqc`.
SLaks