Преобразование оператора регулярного выражения Perl в регулярное выражение PythonPython

Программы на Python
Ответить
Anonymous
 Преобразование оператора регулярного выражения Perl в регулярное выражение Python

Сообщение Anonymous »

Мне нужно преобразовать регулярное выражение из Perl в Python, но я не очень знаком с регулярным выражением Perl.

У меня есть следующее:

$x =~ s/([^\"])(item\s+7[^0-9a-z\"]*management(?:[^0-9a-z]{0,3}s)?\s+discussions?\s+and\s+analysis\s+of\s+(?:financial\s+conditions?\s+|results\s+of\s+operations?)(?:\s+and\s+results\s+of\s+operations?|\s+and\s+financial\s+conditions?)?)/\1#######ITEM7:\2#######/gis;

$x =~ s/([^\"])(item\s+7[^0-9a-z\"]*a[^0-9a-z\"]*(?:quantitative\s+and\s+(?:qualitative|qualification)\s+disclosures?\s+about\s+)?market\s+risk)/\1#######ITEM7A:\2#######/gis;

$x =~ s/([^\"])(item\s+8[^0-9a-z\"]*.{0,40}financial\s+statements[^\.])/\1#######ITEM8:\2#######/gis;

@X = (split /\#\#\#\#\#\#\#/, $x)


Я считаю, что s/ эквивалентен python re.split, но я не уверен, что делает /gis.

Кроме того, я тоже не уверен, что это означает:

(@M) = ($y =~ m/((?:\d+:ITEM7 \d+:\d+ )+(?:\d+:ITEM7A \d+:\d+ )*)(?:\d+:ITEM8 \d+:\d+\s*)+/g)


Я был бы очень признателен за помощь!

РЕДАКТИРОВАТЬ:

Просто еще один быстрый вопрос, что именно делает:

for($i = 0; $i < scalar(@X); ++$i) {
if($X[$i] =~ m/^(ITEM(?:7|7A|8)):(.*)$/s) {
$Z[$i] = $2;
$Y[$i] = $i . ':' . $1;
} else {
$Z[$i] = $X[$i];
$Y[$i] = $i . ':' . length_in_words($X[$i]);
}
}

sub length_in_words {
my $x = shift;
my @k;
return scalar(@k = $x =~ m/(\S+)/sg);
}


Подробнее здесь: https://stackoverflow.com/questions/558 ... thon-regex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»