2017-10-23 11 views
0

こんにちは、正規表現とそのすべてを読んだことがありますが、実際には完全に理解していません。ちょうどここでGoogleとGoogleの検索の多くの後に小さな助けを探しています。Powershellの正規表現の前にトークンを無視する

私が編集したが、今の私はちょうど単一の文字列をやっているふりをしましょう用していますXMLファイルを持っています。これは、Replace Database = "SQLEventLog"というテキストを置き換えて失うことを除いて、素晴らしいことです。どのような種類のトークンを無視しますか?

はここだから私のコード

$passedString = '<Connection Database="SQLEventLog"  >Data 
Source=;Initial Catalog=Connector;Integrated Security=True</Connection>' 

search($passedString) 

function search ($string) 
{ 
    $pattern = '*Data Source=*' 

    if ($string -like '*Data Source=*') 
    { 
     Write-Warning 'found' 
     $string = $string -replace '.*Data Source=*', 'Data 
     Source=localhost' 
    } 

    Write-Warning $string 
} 

答えて

0

、いくつかのことです。関数パラメータを定義するベストプラクティスは、Param()節を使用することです。 PowerShellの関数はかっこでは呼び出されませんが、空白で区切られています(Function arg1 arg2 Arrayarg3,Arrayarg3

また、-like比較演算子は正規表現を使用していません。これはワイルドカード比較です。あなたの目標を達成するためにあなたの例を更新しました。

Function Search 
{ 
    Param($String) 

    If ($String -like '*Data Source=*') 
    { 
     Write-Warning 'found' 
     $string = $string -replace 'Data\sSource=', 'Data Source=localhost' 
    } 

    Write-Warning $string 
} 

$passedString = 'Data Source=;Initial Catalog=Connector;Integrated Security=True' 

Search $passedString 

注:-replace機能は最初の部分に正規表現を使用しません。

+0

これは私がやったよりずっと簡単です。それをテストし、それは動作します。 – LINQtothepast

関連する問題