regex lookaroundとかなり簡単:
(?<=\=%7)[A-Z]+(?=%)
がonline上でそれを試してみてください。
あなたが途中でさらにオープンにパターンを使用している場合は、ungreedyフラグを追加する必要があります
(?<=\=%7).+?(?=%)
はこのようにそれを使用します。
$str="onething=%7BABCDEFGHIJKLM%something=%7BNOPQRSTUVWXYZ%"
$ret = [Regex]::Matches($str, "(?<=\=%7).+?(?=%)")
for($i = 0; $i -lt $ret.Count; $i++) {
$ret[0].Value
}
あなたはので、キャプチャグループを使用する必要はありません私のパターンは完全一致を与える。
説明:
正の後方参照は(?<=%7)
アサート正規表現は、文字と一致していることを、文字通り%7(大文字と小文字を区別)
マッチ[A-Z]+
+数量詞下記のリストに存在する単一の文字 - 可能な限り1回と無制限の時間で一致し、必要に応じて返す(欲張り)
A〜Zの範囲の1文字(ケースセンsitive)試合以下の正規表現があること
肯定先読み(?=%)
アサート:文字通り
グローバルパターンフラグ文字%と一致する グラム修飾子:グローバル。すべての試合(最初の試合後に復帰しない)
U修飾語:Ungreedy。マッチはデフォルトでは怠惰になります。今?量指定子に続いて貪欲にする
Powersehll!= Powershell – karlphillip