using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<=^ *)(?=\$(?:\{[a-z_][a-z0-9_]*\}|[a-z_][a-z0-9_]*)|[a-z_][a-z0-9_]*)(?:(?:\$\{)?([^ \}]+)\}?)(?= *$)";
string input = @"### INFO
# Attempt to capture a parameter identifier inside a text selection, possibly
# wrapped in whitespace, including the following (examples using `backtick quotes`):
# - Raw word: e.g. `param_name`
# - $parameter expansion: e.g. `$param_name`
# - ${parameter} expansion e.g. `${param_name}`
### ENDINFO
testvar
testvar
test_var
test5_var
test_var5
$test_var
$test_var4
${test_var4}";
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx