0

Perlプログラマーではないので、Pythonに移植する構造をよく理解していることを確認したいと思います。

使用時:

if (s/^([$PChar])(.)/$2/) {
  print $1,"\n";
  $finished = 0;
}
  • $ 1、$2などが正規表現に一致しています
  • s/検索/置換/

私が本当に確信していないのは、印刷$1の前にマッチング/置換が行われるかどうかです。現在のバッファ($ F、つまり$ _行ごとに読み取られ、スペース文字で分割されます)内で「インプレース」で実行され、変更されます(つまり、よく理解している場合は、([$ PChar])上記のステートメントで文字列の@先頭が完全に削除/失われた場合)?

編集:いいえ、おそらく失われていません。最初の括弧部分がキャプチャされ、$ 1 +改行文字として出力され、次に...いいえ、$ 2になるものがわかりません...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はここから表示されます

よろしくお願いします

4

1 に答える 1

2
# try to delete the first character from the string contained in
# $_ if that character is one of the characters contained in
# the string $PChar. The deletion is done by replace the first and
# second character by only the second character.
if (s/^([$PChar])(.)/$2/) {

  # if the replacement was successful, print the deleted character.
  print $1,"\n";
  $finished = 0;
}
于 2012-05-03T08:26:03.370 に答える