I have the following string and I would like to remove <bpt *>*</bpt> and <ept *>*</ept> (notice the additional tag content inside them that also needs to be removed) without using a XML parser (overhead too large for tiny strings).
The big <bpt i='1' x='1' type='bold'><b></bpt>black<ept i='1'></b></ept> <bpt i='2' x='2' type='ulined'><u></bpt>cat<ept i='2'></u></ept> sleeps.
Any regex in VB.NET or C# will do.
If you just want to remove all the tags from the string, use this (C#):
EDIT:
I decided to add on to my solution with a better option. The previous option would not work if there were embedded tags. This new solution should strip all <**pt*> tags, embedded or not. In addition, this solution uses a back reference to the original [be] match so that the exact matching end tag is found. This solution also creates a reusable Regex object for improved performance so that each iteration does not have to recompile the Regex:
ADDITIONAL NOTES:
In the comments a user expressed worry that the ‘.’ pattern matcher would be cpu intensive. While this is true in the case of a standalone greedy ‘.’, the use of the non-greedy character ‘?’ causes the regex engine to only look ahead until it finds the first match of the next character in the pattern versus a greedy ‘.’ which requires the engine to look ahead all the way to the end of the string. I use RegexBuddy as a regex development tool, and it includes a debugger which lets you see the relative performance of different regex patterns. It also auto comments your regexes if desired, so I decided to include those comments here to explain the regex used above: