2013-08-02 252 views

回答

1

您可以使用類似[^.]+(?=\.)隨着比賽和customer更換。

(?=\.)是一個積極的向前看,它會匹配之前的零件之後有一個點,但它不會匹配任何字符本身。

E.g.在C#中,你可以使用

Regex.Replace(foo, @"[^.]+(?=\.)", "customer"); 
0

如果你在C#這樣做,那麼我會建議你只是在做這樣的事情:

var newFileName = fileName.Replace(Path.GetFileName(fileName), "newFileNameValue"); 

如果它是在VB.NET,它看起來幾乎一模一樣相同:

Dim newFileName As String = fileName.Replace(Path.GetFileName(fileName), "newFileNameValue") 

你可以使用正則表達式,但它可能有點矯枉過正,不太穩定。請參閱構建正則表達式時,您必須將其分解到一個非常抽象的層次。您需要處理您的域中的每個擴展,並且該列表可以快速增長。因此,將這些擴展包含在正則表達式中通常是不可行的。

若要進一步增加該問題,有效的文件名可能是這樣的,MyFile.v1.l1.ext1.txt。該文件的擴展名爲.txt,但使用正則表達式來抓取該文件非常困難。

0

在Unix上你可以用sed這樣的:

echo "$str"|sed 's/abcd\(\.ext\)/customer\1/' 

即尋找ABCD緊跟.ext(捕獲這個組)。然後將其替換爲customer和匹配組#1(.ext

如果您使用的任何其他平臺/語言方法應該相同。

0

perl的

$x =~ s/(.*)(\.ext\.com)/customer$2/;