テキスト内の位置に制約を定義できる単一の正規表現を使用して文字列を照合することは可能ですか?
たとえば、16 進数でエンコードされたファイルの場合、16 進数表現が 0x40 より大きい文字に対応する 16 進数表現を一致させたいと考えています。位置の制約は、マッチングを偶数の位置から開始する必要があります。たとえば、 では一致する必要がありますが、では034673911921
一致しません。46
73
91
92
テキスト内の位置に制約を定義できる単一の正規表現を使用して文字列を照合することは可能ですか?
たとえば、16 進数でエンコードされたファイルの場合、16 進数表現が 0x40 より大きい文字に対応する 16 進数表現を一致させたいと考えています。位置の制約は、マッチングを偶数の位置から開始する必要があります。たとえば、 では一致する必要がありますが、では034673911921
一致しません。46
73
91
92
次のようなものを使用できます。
^(?:..)*([4-9A-Fa-f][\da-fA-F])
これにより、キャプチャグループの前に偶数の文字が表示されます。
正規表現内の位置をエンコードできます。偶数の位置からのみ開始する例の場合、次のようになります。
/^(?:..)*([4-9a-fA-F].)/
2 つのわかりやすい手順で実行できます。最初にフィールドに分割し、次にサイズを確認します。の例を次に示しsed
ます。お役に立てば幸いです。
echo 034673911921 | sed -nr 's7([0-9][0-9])/\1 /gp' | sed -n 's/[0-3][0-9]//gp'