1

私は現在、そのような正規表現を使用しています(.{12}$)|(^.{1,12}$)。「値が1〜12の場合はそれらを返し、そうでない場合は最後の12を返します。」のようなものです。

別の句を追加しようとしています。長さが16より大きい場合は、そのサブセットを返す必要があります(具体的には、5番目の文字から12を返します)。

同じ正規表現内でこれを行うにはどうすればよいですか?

4

1 に答える 1

1

で動作するようです

(?<=^.{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
于 2013-02-28T14:21:39.487 に答える