私は現在、そのような正規表現を使用しています(.{12}$)|(^.{1,12}$)
。「値が1〜12の場合はそれらを返し、そうでない場合は最後の12を返します。」のようなものです。
別の句を追加しようとしています。長さが16より大きい場合は、そのサブセットを返す必要があります(具体的には、5番目の文字から12を返します)。
同じ正規表現内でこれを行うにはどうすればよいですか?
私は現在、そのような正規表現を使用しています(.{12}$)|(^.{1,12}$)
。「値が1〜12の場合はそれらを返し、そうでない場合は最後の12を返します。」のようなものです。
別の句を追加しようとしています。長さが16より大きい場合は、そのサブセットを返す必要があります(具体的には、5番目の文字から12を返します)。
同じ正規表現内でこれを行うにはどうすればよいですか?
で動作するようです
(?<=^.{4}).{12}|^.{1,12}$
これには2つの部分が含まれます。最初のものは、少なくとも16文字の長さの文字列を処理します。そのため、5番目の文字から照合を開始します(これ(?<=^.{4})
が目的です。前に正確に4文字あることを確認してください)。その後、一致する文字が少なくとも12文字ある必要があります。
2番目の部分は、完全な文字列と一致する1〜12文字の文字列専用です。
クイックPowerShellテスト:
PS> '12345','1234567890','abcdefghijklmnopqrst'|%{if($_-match'(?<=^.{4}).{12}|^.{1,12}$'){$Matches}}
Name Value
---- -----
0 12345
0 1234567890
0 efghijklmnop