1

データの長さを指定するヘッダーを含むメッセージを受け取りました。私の例では、処理する 28 文字のメッセージがあります。

一致した数を同じ正規表現で繰り返し回数として使用する方法を見つけようとしています。次のような動作しない例です。

s = "message 28\r\nthis is some random sentence"
matches = re.match(r"(?P<command>\S+)\s+(?P<bytes>\d+)\r\n(?P<data>.{(?P=bytes)})", s, re.DOTALL).groupdict()

私の理解では、私の (?P=bytes) は、正規表現を任意に変更できるようにするのではなく、「bytes」という名前のグループに一致する同じ文字列に一致するため、機能しないのですが、何を達成する方法がありますか? 2 つの正規表現を介して文字列を渡さないようにしたいですか?

4

1 に答える 1

5

長さに一致する単一の正規表現を記述し、その長さを量指定子の後方参照として使用することはできません。

正規表現を使用して長さを確認し、通常の文字列スライス操作を使用して文字列から適切な文字を抽出できます。

于 2012-08-05T20:39:22.020 に答える