Использование регулярного выражения .net в Python - PullRequest
2 голосов
/ 05 ноября 2010

У меня есть несколько регулярных выражений, написанных для формата регулярных выражений Microsoft .net , и я хочу использовать их в программе python на компьютере с Linux. Есть ли совместимая библиотека или способ их покрытия? Если я должен сделать это вручную, знаете ли вы шпаргалку или руководство?

Ответы [ 4 ]

6 голосов
/ 05 ноября 2010

Большинство функций в регулярных выражениях .NET доступны в Python; однако, кое-чего не хватает:

  1. Python не поддерживает повторение переменных внутри видимости, только фиксированной длины.
  2. Python использует другой синтаксис для именованных захватов.
  3. Python по-разному соответствует символам Юникода.
  4. Python не имеет атомных групп (?>...) или собственнических квантификаторов ++, *+, ?+.
  5. В Python используйте r"..." необработанные строки для регулярных выражений, иначе вы столкнетесь с обратной косой чертой.

Полный список различий можно найти здесь .

И если вам нужно часто выполнять преобразования в регулярные выражения, RegexBuddy может сделать это за вас (если, конечно, вы не используете функции, которые не имеет движок регулярных выражений).

1 голос
/ 05 ноября 2010

С точки зрения реализации, я думаю, что движки CLR и Python regex очень близки, больше, чем любой из них к другим языкам, таким как Perl или PCRE. Например, я использовал Expresso для создания и тестирования сложных регулярных выражений, которые позже я адаптировал к коду Python.

Тем не менее, я не думаю, что когда-либо видел реальный конвертер, но, поскольку они настолько похожи, их будет относительно легко преобразовать вручную (опять же, больше, чем если бы мы говорили о других реализациях) .

Эта страница имеет хорошее сравнение между различными механизмами, хотя она фокусируется на возможностях, а не на сходстве синтаксиса.

1 голос
/ 05 ноября 2010

Документы для модуля re охватывают синтаксис регулярных выражений Python.FWIW, синтаксис очень похож, за исключением замен.

0 голосов
/ 05 ноября 2010

Вы уверены, что есть несовместимость?По крайней мере, для базового и среднего уровня в регулярных выражениях все реализации в значительной степени согласуются с синтаксисом, за исключением, возможно, того, следует ли экранировать парены или нет.

...