python中特定于Perl的转换

python中特定于Perl的转换,python,regex,perl,transform,canonicalization,Python,Regex,Perl,Transform,Canonicalization,我需要一个特定于Perl的Python代码 以下是Perl代码: use strict; use warnings; my $s = 'http://www.bergdorfgoodman.com/Ippolita-18k-Gold-Rock-Candy-Mini-Single-Square-Pendant-Necklace/prod108010011/p.prod#.U75MVqY-PtS'; $s =~ s/(.*\.com)\/[^\/]+(\/prod[^\_]*\/p\.prod

我需要一个特定于Perl的Python代码

以下是Perl代码:

use strict;
use warnings;


my $s = 'http://www.bergdorfgoodman.com/Ippolita-18k-Gold-Rock-Candy-Mini-Single-Square-Pendant-Necklace/prod108010011/p.prod#.U75MVqY-PtS';

$s =~ s/(.*\.com)\/[^\/]+(\/prod[^\_]*\/p\.prod).*/$1$2/si;


print $s ."\n";
我已经用$1和$2处理了捕获部分,但我不知道如何在Python中完成它

输出:

http://www.bergdorfgoodman.com/prod108010011/p.prod
http://www.bergdorfgoodman.com/prod108010011/p.prod

以下是Python代码:

import re
p = re.compile(ur'(.*\.com)\/[^\/]+(\/prod[^\_]*\/p\.prod).*', re.DOTALL | re.IGNORECASE)
test_str = u"http://www.bergdorfgoodman.com/Ippolita-18k-Gold-Rock-Candy-Mini-Single-Square-Pendant-Necklace/prod108010011/p.prod#.U75MVqY-PtS"
subst = ur"\1\2"
result = re.sub(p, subst, test_str)
在Python中,需要在替换字符串中使用
\1
而不是
$1

看到和

输出:

http://www.bergdorfgoodman.com/prod108010011/p.prod
http://www.bergdorfgoodman.com/prod108010011/p.prod

“ur”和“u”是什么意思?
u
代表Unicode,
r
只是表示我们使用的是“原始”字符串,其中``不需要转义。处理正则表达式时非常有用。
s{\A(+[.]com)/[^/]+(/prod[^/]+/p[.]prod)}{$1$2}six
。。。另外,我不知道您为什么需要
/s
。您真的希望URL的初始段可能包含换行符吗?