Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex for removing a specific BBCode from a string

Tags:

c#

regex

bbcode

I'm trying to write a simple method for removing specific BBCodes from an input string.

For example, where I have an input of:

string input = "[b]Hello World![/b]";

I would want to be able to do:

Remove(input, "b");

And get an output of:

"Hello World!"

Regex really isn't my strong suit. I've managed to piece together the following from google:

public static string Remove(string input, string code)
{
    string pattern = string.Format(@"\[{0}\].*?\[\/{1}\]", code, code);

    return Regex.Replace(input, pattern, string.Empty, RegexOptions.IgnoreCase);
}

Unfortunately this returns an empty string for my given example.

Can anyone advise me on how I can correct my regex to get the desired output?

Thanks

like image 281
Vesuvian Avatar asked Sep 25 '26 16:09

Vesuvian


1 Answers

Use this simple regex: \[/?{0}\]

Your regex is removing the whole string

  • Your regex \[{0}\].*?\[\/{1}\] is removing the entire [b]...[/b] string. That's why you are getting an empty string from the replacement.

  • What you need is to remove only the [b] and [b]. In normal regex, this is expressed quite simply with \[/?b\], where the slash is made optional by the ?

  • In your parametrized regex, something like \[/?{0}\] will work.

like image 113
zx81 Avatar answered Sep 28 '26 05:09

zx81



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!