using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?mnxs-i)
^
(?!$)
(?<Thousands>
M{0,3}
)
(?<Hundreds>
(
(C(M|D))
(?!C)
|
D
)?
C{0,3}
)
(?<Tens>
(
(X(C|L))
(?!X)
|
L
)?
X{0,3}
)
(?<Ones>
(
(I(X|V))
(?!I)
|
V
)?
I{0,3}
)
$";
string input = @"MMMDCCCLXXXVIII
MMMCDXLIV
50 Valid
I
MMMCMXCIX
MMDCLXXIV
MCDXCIX
CCCXVIII
XCII
MMMLXXXIV
MMMCMLIII
DCCXXX
DCXCV
CCXCV
MMDCLX
MDCCLXXVI
CDXLV
MMMCDXLII
CMXXI
MDCCCXC
MMCCCXLVII
MCMXXXVIII
CDXCII
MMMCMXXII
DCXLVIII
MCDLVI
DCCLXXXIX
MMXIV
MCMXC
CCCLXXI
MDCCCXXI
MMCMLIV
MDCXVI
MMCMXLV
MCDLXXIX
DCCCXIII
CCXLVII
MDCCCXCV
MMCMLXXXVIII
CDLX
MMCDLIII
CMXLV
DCCXXII
MMMDCCL
CDXXVIII
MMDXLII
DCCCXCIX
MMXLI
CMXLIX
MCDXXXIX
50 Invalid
IIII
VV
LL
DD
XXXX
CCCC
MMMM
IIV
IIIV
VX
VL
VC
XD
XM
IL
IC
ID
IM
MCMC
IXX
XCC
IIC
CDM
CDC
MIM
IXL
ILX
ICX
IICM
IIIC
IIIM
XIC
XIXX
XIXC
IXXC
CMCM
CDCD
XCXC
XLXL
MDCM
DCD
IXXL
XLC
VIX
VID
VIL
IIVX
IVXL
MXLIVC
CXM
";
RegexOptions options = RegexOptions.Multiline | RegexOptions.ExplicitCapture | 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