在一个python正则表达式中使用匹配的数字作为重复计数

时间:2012-08-05 20:36:37

标签: python regex

我收到一条带有标题的消息,指定数据的长度。在我的例子中,我有一个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”命名组匹配的相同字符串,而不是允许我任意改变正则表达式,这就是为什么它不起作用,但是有一些方法通过两个正则表达式来实现我想要的而不通过我的字符串?

1 个答案:

答案 0 :(得分:5)

不可能编写一个可以匹配长度的正则表达式,然后将该长度用作量词中的反向引用。

您可以使用正则表达式查找长度,然后使用普通的字符串切片操作从字符串中提取相应的字符。