将此perl替换转换为python

时间:2013-12-12 22:47:02

标签: python regex perl python-2.7

我正在尝试将一些perl代码移植到python。不熟悉perl是一个挑战,但我已经完成了大部分工作。然而,有一个函数执行单词替换,我不知道是否有一个直接的python equivelent。

$my_string =~ s/^(.*?) \(The\)$/The $1/;
$my_string=~ s/\bL\.? ?L\.? ?C\.?\b//;
$my_string =~ s/[(),]//g;

我想我可以使用以下内容:

re.sub('s/^(.*?) \(The\)$', '$/The 1/', my_string)

第一个样本,但我对其他人一无所知。

感谢您的任何见解。

1 个答案:

答案 0 :(得分:6)

您需要在此删除s//部分,并使用\1作为反向引用。使用原始字符串使这个可行:

my_string = re.sub(r'^(.*?) \(The\)$', r'The \1', my_string)
my_string = re.sub(r'\bL\.? ?L\.? ?C\.?\b', '', my_string)
my_string = re.sub(r'[(),]', '', my_string)

这些替换默认为“全局”(g标志的作用);如果需要限制,请将整数计数添加为第4个参数:

my_string = re.sub(r'^(.*?) \(The\)$', r'The \1', my_string, 1)
my_string = re.sub(r'\bL\.? ?L\.? ?C\.?\b', '', my_string, 1)
my_string = re.sub(r'[(),]', '', my_string)