私は当初、これに戸惑いました: Perl で文字分割関数に取り組んでいたところ、次のことに気付きました:
DB<56> map(print("-", $_, "\n"), split( //, "test") );
-t
-e
-s
-t
DB<57> map(print("-", $_, "\n"), split( /./, "test") );
DB<58> map(print("-", $_, "\n"), split( /(.)/, "test") );
-
-t
-
-e
-
-s
-
-t
// 空の正規表現を使用すると、文字列が個々の文字に分割されることは既に知っていました。しかし、正規表現のこれらの空の文字列がどこから来たのかは明確ではありませんでした/(.)/
-しかし、ほんの数文後、ページには「正規表現にグループ化がある場合、生成されたリストにはグループ化からの一致した部分文字列も含まれます.. . $x の最初の文字が正規表現に一致したため、 split は空の最初の要素をリストの先頭に追加しました。 " したがって、これは予期された動作です。(まあ、グループ化されていないドットが何もしない理由はまだわかり/./
ません)
しかし、私もPythonで作業していて、同様の問題(分割の結果として空の文字列)が発生しました-そしてfilter(None, list)
、この呼び出しでリストから空の文字列を単純に削除する関数を見つけました。Perlで同じことを達成するために何が使用されていますか?