2

コマンドライン「rename」を使用して、いくつかのピリオドを含むいくつかのファイル名を変更しようとしています。例えば:this.is.a.file.name.txt

少し見てみると、ほとんどそこにたどり着く例がいくつか見つかりましたが、必要に応じて機能させることができないようです。言うまでもなく、私は正規表現を使った非常に環境に配慮した初心者です。

私はこれを試しました:

rename -v -n 's/\.(.+?)(?=\.)//' this.is.a.file.name.txt

その結果、次のようになります。

this.a.file.name.txt

次のリソースにある例を変更しようとしましたが、行き詰まりました。 PHP正規表現: 一致の最後の出現を置き換えない最後の出現の正規表現を除くすべてを選択します

4

1 に答える 1

5

いくつかの理由から、正規表現は正しくありません。まず、空の文字列を置き換えるのはピリオドだけである必要がありますが、ピリオドから次のピリオドであるすべてのものに一致し、それを削除します。また、あなたはそれを一度だけやっています。

必要な正規表現はです/\.(?=.*\.)//g。これは、任意の数の文字と別のピリオドのゼロ幅アサーションが続くピリオドに一致し、可能な限りそれを実行することを意味します。

于 2013-02-03T22:28:34.953 に答える