using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<katex_all>
(?:
(?<!\\|\$)
(?<katex_open>
\${2}
|
\${1}
)
(?!\$)
\n?
(?<katex_content>.+?)\n?
(?<!\\|\$)
(?<katex_close>\g{katex_open})
(?!\$)
\n?
)
|
(?:
(?<!\\)
(?<katex_open>\\\[)
\n?
(?<katex_content>.+?)\n?
(?<!\\)
(?<katex_close>
\\\]
)\n?
)
|
(?:
(?<!\\)
(?<katex_open>\\\()
\n?
(?<katex_content>.+?)\n?
(?<!\\)
(?<katex_close>
\\\)
)\n?
)
)";
string input = @"$$
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$$
This is some text $math \frac12$
other text $\unsupported$
Other node \[ displaymath \\[\\] \frac{1}{2} \] blah
$$ \int_2^3 $$
more text \(and math\) blah
And $math with a
\$ sign$.
This should not match↓
$$$
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$$$
This should not match either
$$
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$
";
RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;
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