/ / Перетворення регулярних виразів Perl на python regex - python, regex, perl

Перетворення Perl регулярного виразу до python regex - python, regex, perl

Мені попросили перетворити скрипт perl на python.

У мене немає ніяких знань про Perl сценаріїв.

Скрипт perl містить ці рядки коду:

 1. if ($option =~ "Fed5")
2. if (($option =~ m/Fed5/i) && ($option =~ m/KD/i))
3. if (($option =~ m/Fed5/i) && ($option !~ m/KD/i))

Я зрозумів, що це пов'язано з perl regex.

Будь ласка, дайте мені знати, як я можу отримати Python еквівалент вищезгаданих заяв.

Відповіді:

1 для відповіді № 1
1. if ($option =~ "Fed5")

еквівалентний код python:

if re.search(r"Fed5", option):

Код Perl:

2. if (($option =~ m/Fed5/i) && ($option =~ m/KD/i))

еквівалентний код python:

if re.search(r"(?i)Fed5", option) and re.search(r"(?i)KD", option):

Код Perl:

if (($option =~ m/Fed5/i) && ($option !~ m/KD/i))

еквівалентний код python:

if re.search(r"(?i)(?!.*kd)Fed5", option):

Я скоротив третю умову.

АБО використовуйте умову double.

if re.search(r"(?i)Fed5", option):
if not re.search(r"(?i)kd", option):

1 для відповіді № 2

Значення m у perl означає лише відповідність регулярного виразу між // і / i є модифікатором, який говорить про ігнорування випадку.

http://perldoc.perl.org/functions/m.html

Оператор = ~ є оператором прив'язки: http://perldoc.perl.org/perlop.html#Binding-Operators

Тому:

    1. Відповідає рядку Fed5
    1. Підібрати рядок Fed5, ігноруючи випадок, і відповідати рядку KD ігноруючи випадок.
    1. Відповідний рядок Fed5 ігноруючи випадок, і не відповідає KD ігноруючи справу.