4

2 つ以上の英数字以外の文字の任意の組み合わせを 1 つの "." にまとめたいと考えています。

このフィルターの前に既に 1 つのフィルターがあるので、心配する必要があるそのような文字は "_"、"-"、"." の 3 つだけです。

これが私が思いついたものです

OutNameNoExt:= RegExReplace(OutNameNoExt,"[\._-]+" , ".")

悲しいことに、正規表現の本の最初の 3 つの章しか読んでいないため、失敗します。

このような文字列をクリーンアップしたい

98788._Interview__with_a_booger..876789_-_.avi

読むように

98788.Interview.with.a.booger.876789.avi

また、最初のオカレンスだけでなく、すべてのオカレンスで置換が行われるように、まったく新しい演算子を使用する必要があると思いますよね?

知識が流れる準備ができました!

4

1 に答える 1

4
OutNameNoExt:= RegExReplace(OutNameNoExt,"[^A-Za-z0-9]{2,}" , ".")

[^A-Za-z0-9]英数字以外の文字に一致します(^角かっこ式のコンテキストでは否定を表します)。{2,}前の式の2文字以上に一致します。基本的にはと同じ[^A-Za-z0-9][^A-Za-z0-9]+です。

于 2012-08-25T03:46:44.640 に答える