I have some useful regular expressions in Perl. Is there a simple way to translate them to .NET\'s dialect of regular expressions?
If not, is there a concise referen
There is a big comparison table in http://www.regular-expressions.info/refflavors.html.
Most of the basic elements are the same, the differences are:
Minor differences:
\u200A, in Perl it is \x{200A}.\v in .NET is just the vertical tab (U+000B), in Perl it stands for the "vertical whitespace" class. Of course there is \V in Perl because of this.(?(name)yes|no), but (?()yes|no) in Perl. Some elements are Perl-only:
x?+, x*+, x++ etc). Use non-backtracking subexpression ((?>…)) instead.\N{LATIN SMALL LETTER X}, \N{U+200A}.\l (lower case next char), \u (upper case next char).\L (lower case), \U (upper case), \Q (quote meta characters) until \E.\pL and \PL. You have to include the braces in .NET e.g. \p{L}.\X, \C.\v, \V, \h, \H, \N, \R\g1, \g{-1}. You can only use absolute group index in .NET.\g{name}. Use \k instead.[[:alpha:]].(?|…)\K. Use look-behind ((?<=…)) instead.(?{…}), post-poned subexpression (??{…}).(?0), (?R), (?1), (?-1), (?+1), (?&name). (?{…})(R), (R1), (R&name)(DEFINE). (*VERB:ARG)(?P…) . Use (?…) instead.(?P=name). Use \k instead.(?P>name). No equivalent in .NET.Some elements are .NET only:
\K instead.(?(pattern)yes|no).[a-z-[d-w]](?<-name>…). This could be simulated with code evaluation assertion (?{…}) followed by a (?&name).References: