C# | Regex Parsing
Single match
Section titled “Single match”using System.Text.RegularExpressions;
string pattern = ":(.*?):";string lookup = "--:text in here:--";
// Instanciate your regex object and pass a pattern to itRegex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));// Get the match from your regex-objectMatch mLookup = rgxLookup.Match(lookup);
// The group-index 0 always covers the full pattern.// Matches inside parentheses will be accessed through the index 1 and above.string found = mLookup.Groups[1].Value;Result:
found = "text in here"Multiple matches
Section titled “Multiple matches”using System.Text.RegularExpressions;
List<string> found = new List<string>();string pattern = ":(.*?):";string lookup = "--:text in here:--:another one:-:third one:---!123:fourth:";
// Instanciate your regex object and pass a pattern to itRegex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));MatchCollection mLookup = rgxLookup.Matches(lookup);
foreach(Match match in mLookup){ found.Add(match.Groups[1].Value);}Result:
found = new List<string>() { "text in here", "another one", "third one", "fourth" }Syntax
Section titled “Syntax”new Regex(pattern);//Creates a new instance with a defined pattern.Regex.Match(input);//Starts the lookup and returns the Match.Regex.Matches(input);//Starts the lookup and returns a MatchCollection
Parameters
Section titled “Parameters”|Name|Details
|---|---|---|---|---|---|---|---|---|---
|Pattern|The string pattern that has to be used for the lookup. For more information: msdn
|RegexOptions [Optional]|The common options in here are Singleline and Multiline. They are changing the behaviour of pattern-elements like the dot (.) which won’t cover a NewLine (\n) in Multiline-Mode but in SingleLine-Mode. Default behaviour: msdn
|Timeout [Optional]|Where patterns are getting more complex the lookup can consume more time. This is the passed timeout for the lookup just as known from network-programming.
Remarks
Section titled “Remarks”Needed using
using System.Text.RegularExpressions;Nice to have
- You can test your patterns online without the need of compiling your solution to get results here: Click me
- Regex101 Example: Click me
Especially beginners are tended to overkill their tasks with regex because it feels powerful and in the right place for complexer text-based lookups. This is the point where people try to parse xml-documents with regex without even asking theirselfes if there could be an already finished class for this task like XmlDocument.
Regex should be the last weapon to pick agains complexity. At least dont forget putting in some effort to search for the right way before writing down 20 lines of patterns.