これは実際にはGraimer のソリューションへの単なるコメントですが、コメントとしては長すぎて読みにくいため、代わりに (補足) 回答にしています。
削除後に文字列を再ラップするには、次のUSER\
ようにします。
$s = "Members : {member1, member2, member3, member4, member5, member6}"
$s -match '^(.*?{)(.*)(})$'
$pad = " " * $matches[1].Length
$matches[1] + ($matches[2] -replace '(.{1,20},) ', "`$1`r`n$pad") + $matches[3]
$matches
最初の正規表現は、コレクションを介してアクセスできる 3 つの部分に文字列を分割します。
Name Value
---- -----
3 }
2 member1, member2, member3, member4, member5, member6
1 Members : {
0 Members : {member1, member2, member3, member4, member5, member6}
$matches[1]
は左中括弧を含むプロローグ、$matches[2]
はメンバー リスト、$matches[3]
は右中括弧です。$matches[2]
これで、必要な長さでラップするだけで済みます。
'(.*{1,20},) '
上記は、「コンマとスペースが続く最大 20 文字の最長一致」を意味します。これを 1 番目のグループ ( ) の後に改行 (``r $pad`) を付けて置き換え、$1
プロローグn``) and a number of spaces that matches the length of the prologue (
と末尾の中かっこでつなぎ合わせます。