在Python中使用.NET正则表达式

2 投票
4 回答
1074 浏览
提问于 2025-04-16 06:37

我有一些为微软的 .net 正则表达式格式写的正则表达式,现在想在Linux机器上的Python程序里使用它们。请问有没有兼容的库或者方法可以转换它们?如果需要手动转换的话,你知道有没有什么速查表或者指南吗?

4 个回答

1

从实现的角度来看,我觉得CLR和Python的正则表达式引擎非常相似,比它们与其他语言,比如Perl或PCRE的相似度要高。例如,我曾经使用Expresso这个工具来创建和测试复杂的正则表达式,之后再把这些表达式改成Python代码。

不过,我想我从来没有见过一个实际的转换工具,但因为它们之间的相似性,手动转换应该相对简单(比起其他实现来说更容易)。

这个页面对不同的引擎进行了很好的比较,虽然它主要关注的是功能,而不是语法的相似性。

1

re模块的文档介绍了Python中的正则表达式语法。顺便说一下,这种语法非常相似,只是在替换的部分有所不同。

6

在.NET的正则表达式中大部分功能在Python中也能找到,不过有一些东西是缺失的:

  1. Python不支持在回顾(lookbehind)中使用可变长度的重复,只能使用固定长度。
  2. Python的命名捕获用法和其他语言不同。
  3. Python对Unicode字符的匹配方式也不一样。
  4. Python没有原子组 (?>...) 或者占有量词 ++, *+, ?+
  5. 在Python中,使用 r"..." 原始字符串来写正则表达式,否则你会在反斜杠上出错。

你可以在这里找到一个全面的 差异列表

如果你经常需要进行正则表达式转换,RegexBuddy 可以帮你完成这项工作(当然前提是你使用的目标正则引擎要支持这些功能)。

撰写回答