0

何イムビル:

スクリプトは、GIT-POSHを使用して作業ディレクトリをアーカイブし、WindowsPowershellSSHモジュールを使用してLinuxApacheサーバーに送信します。

便宜上、スクリプトは、Apacheサーバーだけでなくローカルマシン上の既存のファイルについてもレポートを作成する必要があります。


問題:

これは、命名規則で各ブロックを区切るために文字列操作が必要な場所です。

block_block一部のブロックにすでにアンダースコアが含まれていることに気付くまで、アンダースコアを使用するつもりでした。これは、各ブロックをブラケットでカプセル化することにしたときです[block][block]

PHPでは、preg_splitを使用して、各部分を連想配列に引き出します。

[product][branch_name][date][time][commit_hash]


予想される使用法:

--> Get-Product $string
--> product123
--> Get-Branch $string
--> branch123


私が持っている質問:

  • preg_splitPowerShellとApacheを使用して、この文字列を同じように使用するにはどうすればよいですか?
  • 同じ操作をサポートするより良い命名規則?
4

1 に答える 1

1

PHPpreg_splitは で模倣できますSystem.RegularExpressions.Split()。いくつかの注意点があります。つまり、Split()置換されたトークンに対して空の文字列が返されるため、何らかのフィルタリングが必要です。そのようです、

$data = "[product][branch_name][date][time][commit_hash]"
$arr = [Regex]::Split($data, "[\[\]]") | ? { $_.length -gt 0 }
$arr

出力:

product
branch_name
date
time
commit_hash

フィルタリング節? { $_.length -gt 0 }がない場合 (長さが 0 の文字列オブジェクトを除外します)、出力はわずかに異なります。

product

branch_name

date

time

commit_hash

この動作は、MSDNに記載されています。

于 2012-09-19T08:25:14.350 に答える