Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在单个python正则表达式中使用匹配的数字作为重复计数_Python_Regex - Fatal编程技术网

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

在单个python正则表达式中使用匹配的数字作为重复计数,python,regex,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.DOT

我得到了一条消息,消息头指定了数据的长度。在我的示例中,我要处理一条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()
s=“message 28\r\n这是一个随机的句子”
matches=re.match(r“(?P\S+)\S+(?P\d+)\r\n(?P.{(?P=bytes)})”,S,re.DOTALL.groupdict()

我的理解是我的(?p=bytes)是与“bytes”命名组匹配的同一字符串的匹配,而不是允许我任意修改正则表达式,这就是它不起作用的原因,但是,有什么方法可以实现我想要的,而不必通过两个正则表达式传递字符串?

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


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

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


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

…现在您有两个问题:)正则表达式不是万能的。在这种情况下,使用内置字符串操作可以很容易地解决这个问题……现在有两个问题:)正则表达式并不是万能的。在这种情况下,使用内置字符串操作可以很容易地解决这个问题,基本上,它要做的就是动态修改正则表达式。绝对是矫枉过正。基本上,它所做的就是动态修改正则表达式。绝对过火了。