作为一个非 Perl 程序员,我想确定我已经很好地理解了我将要移植到 Python 的结构,
使用时:
if (s/^([$PChar])(.)/$2/) {
print $1,"\n";
$finished = 0;
}
- $1, $2 等匹配正则表达式
- s/搜索/替换为/
我真的不确定匹配/替换是否在打印 $1 之前完成?并且它是否在当前缓冲区内“就地”完成(即 $F,即 $_ 逐行读取,按其空格字符拆分),这正在改变它(所以如果我理解得很好,([$PChar])当@字符串的开头在上述语句中被完全剥离/丢失时)?
编辑:不,也许它没有丢失,第一个括号部分被捕获,然后打印为 $1 + 换行符然后......不,不明白什么变成了 $2...... 可能是缓冲区更改为第二个括号部分?/结束编辑。
还有任何环境或允许在 Win 平台上进行一些逐步调试的最佳环境是什么?我知道有这个,我不会问这个问题。而且我不需要学习 Perl,只需要能够阅读和适应这个脚本。
这是引人入胜的部分:
@F = split;
for( $j=0; $j<=$#F; $j++) {
my $suffix="";
$_ = $F[$j];
# separate punctuation and parentheses from words
do {
$finished = 1;
# cut off preceding punctuation
if (s/^([$PChar])(.)/$2/) {
print $1,"\n";
$finished = 0;
}
# cut off trailing punctuation
if (s/(.)([$FChar])$/$1/) {
$suffix = "$2\n$suffix";
$finished = 0;
}
整个脚本 tokenize.pl 可以在这里看到,而原始的 tar.bz 如果从这里
此致