翻译Perl的正则EX pressions到.NET [英] Translate Perl regular expressions to .NET

查看:253
本文介绍了翻译Perl的正则EX pressions到.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些有用的经常EX pressions 的在Perl。有没有一种简单的方法将其转化为常规的前pressions .NET的方言?

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 reference of differences?

推荐答案

有一个在<一个大的对照表href="http://www.regular-ex$p$pssions.info/refflavors.html">http://www.regular-ex$p$pssions.info/refflavors.html.

大多数的基本要素是相同的,所述的区别是:

Most of the basic elements are the same, the differences are:

的细微差异:

  • 在统一code转义序列。在.NET中是 \ u200A ,在Perl是 \ x {200A}
  • \ NET中v 只是一个垂直选项卡(U + 000B),在Perl它代表了垂直空白级。当然也有这样符\ v 在Perl,因为。
  • 在有条件EX pression在.NET命名引用((名)吗|)?,而(( &LT;名称&gt;)是|否)在Perl。
  • Unicode escape sequences. In .NET it is \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.
  • The conditional expression for named reference in .NET is (?(name)yes|no), but (?(<name>)yes|no) in Perl.

有些元素是Perl的只有:

  • 占有欲量词( X'+ X * + X ++ 等)。使用非回溯SUBEX pression((&GT; ...))。而不是
  • 命名UNI code转义序列 \ N {拉丁小写字母x} \ N {U + 200A}
  • 案例折叠和逃逸
    • \→(小写的下一个字符), \ U (大写下一个字符)。
    • \→(小写), \ U (大写), \ Q (引号元字符),直到。\ E
    • Possessive quantifiers (x?+, x*+, x++ etc). Use non-backtracking subexpression ((?>…)) instead.
    • Named unicode escape sequence \N{LATIN SMALL LETTER X}, \N{U+200A}.
    • Case folding and escaping
      • \l (lower case next char), \u (upper case next char).
      • \L (lower case), \U (upper case), \Q (quote meta characters) until \E.
      • code (?{...})
      • 在递归(R)(R1)(R&安培;名)
      • 定义(DEFINE)
      • code (?{…})
      • recursive (R), (R1), (R&name)
      • define (DEFINE).
      • (?P&LT;名称&gt; ...)。使用(LT;名称&gt; ...)。而不是
      • (P =名)。使用 \ K&LT;名称&gt; 而不是
      • (?P&GT;名称)。没有等效的.NET。
      • (?P<name>…). Use (?<name>…) instead.
      • (?P=name). Use \k<name> instead.
      • (?P>name). No equivalent in .NET.

      有些元素是.NET只有:

      • 在可变长度查找落后。在Perl中,积极查找落后,使用 \氏/ code>代替。
      • 在任意定期EX pression有条件EX pression ((图案)吗|)。
      • 字符类减法(无证?) [az- [DW]]
      • 均衡组(小于?-name&GT; ...)。这可能与code评价的断言模拟后跟一个({...}?)(安培;名)
      • Variable length look-behind. In Perl, for positive look-behind, use \K instead.
      • Arbitrary regular expression in conditional expression (?(pattern)yes|no).
      • Character class subtraction (undocumented?) [a-z-[d-w]]
      • Balancing Group (?<-name>…). This could be simulated with code evaluation assertion (?{…}) followed by a (?&name).

      参考文献:

      这篇关于翻译Perl的正则EX pressions到.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆