サイモン:
私はPowerShellで正規表現を使用して初期文字列を検索する方法を最後のタイムスタンプが、カントの仕事を文字列にファイル内の文字列を変更しようとしています
(Get-Content sw.js).replace('SW-cache-v.*', 'SW-cache-v'+$(Get-Date -format "s")) | Set-Content sw.js
SW-cache-v.*
私はちょうどそれを置き換えるために、文字列を拾っていないよ、私のために働いていません。
それを行う方法上の任意の考え?
AdminOfThings:
PowerShellでは、-replace
比較演算子は、文字列置換と正規表現マッチングを使用します。
$Replace = "SW-cache-v{0}" -f (Get-Date -format s)
(Get-Content sw.js) -replace 'SW-cache-v.*',$Replace | Set-Content sw.js
覚えておいてください.*
欲張って、ここで、現在の行の最後までのすべての文字に一致します。たとえば、あなたが望んだ場合にのみまで一致するが、次を除く"
文字、あなたは否定文字クラスを使用することができます[^]
:
(Get-Content sw.js) -replace 'SW-cache-v[^"]*',$Replace | Set-Content sw.js
String.Replace .NETメソッドは、リテラル文字列置換(大文字敏感)を行います。
# Wildcards and regex are not allowed with .Replace()
'SW-cache-v extra chars'.Replace('SW-cache-v.*','newstring')
SW-cache-v extra chars
# Literal matching is used by .Replace()
'SW-cache-v.*'.Replace('SW-cache-v.*','newstring')
newstring
-replace
大文字と小文字を区別しないマッチングデフォルト。-creplace
オペレータは、ケースを尊重します。