Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我试图从下面的字符串在Python中创建三个组 Step 0rd, 2: Stop 0rd, 0id Vnsd=264rd L_RD_Gs=10 第一个数字组是ID号,接下来的数字组应该是出现在两个等号之后的数字 我已经创建了下面的正则表达式,它给了我ID号和第二个等号后面出现的数字“10”。我曾尝试在正则表达式中添加第二个=但这对我不起作用^(.*)(\d*)id\s*(.*)。=(\d*)。$ 如何扩展我必须创建的第二个组以隔离第一个等号后的数字“264” 编辑:所提供文本的预期输出将是

我试图从下面的字符串在Python中创建三个组

Step 0rd, 2: Stop 0rd, 0id Vnsd=264rd L_RD_Gs=10
第一个数字组是ID号,接下来的数字组应该是出现在两个等号之后的数字

我已经创建了下面的正则表达式,它给了我ID号和第二个等号后面出现的数字“10”。我曾尝试在正则表达式中添加第二个=但这对我不起作用<代码>^(.*)(\d*)id\s*(.*)。=(\d*)。$

如何扩展我必须创建的第二个组以隔离第一个等号后的数字“264”

编辑:所提供文本的预期输出将是
0
264
10
。我得到了
0
10
,正在与
264
斗争。
请注意,我当前的正则表达式在文本的开头有一个组,我在正则表达式中留下了这个组,但可以忽略它。

这里的一个简单方法是使用
re.findall
和适当的正则表达式模式,例如

inp=“步骤0rd,2:Stop 0rd,0id Vnsd=264第L\u第d\u Gs=10”
matches=re.findall(r'.*(\d+)id\b[^=]+=(\d*)\S*[^=]+=(\d*)\S*',inp)
打印(匹配)
这张照片是:

[('0', '264', '10')]

这里一个简单的方法是使用
re.findall
和适当的正则表达式模式,例如

inp=“步骤0rd,2:Stop 0rd,0id Vnsd=264第L\u第d\u Gs=10”
matches=re.findall(r'.*(\d+)id\b[^=]+=(\d*)\S*[^=]+=(\d*)\S*',inp)
打印(匹配)
这张照片是:

[('0', '264', '10')]

如果组数是动态的,则可以拆分正则表达式:

import re

s = 'Step 0rd, 2: Stop 0rd, 0id Vnsd=264rd L_RD_Gs=10'

id_ = re.search(r'(\d+)id', s).group(1)
groups = dict(re.findall(r'([^\s]+)=(\d+)', s))

print(id_)
print(groups)
印刷品:

0
{'Vnsd': '264', 'L_RD_Gs': '10'}

如果组数是动态的,则可以拆分正则表达式:

import re

s = 'Step 0rd, 2: Stop 0rd, 0id Vnsd=264rd L_RD_Gs=10'

id_ = re.search(r'(\d+)id', s).group(1)
groups = dict(re.findall(r'([^\s]+)=(\d+)', s))

print(id_)
print(groups)
印刷品:

0
{'Vnsd': '264', 'L_RD_Gs': '10'}

当然,我在发布后就解决了我的错误<代码>^(.*?(\d*)id\s*(.*?).*=(\d*).*=(\d*)。$适用于我正在尝试的内容


话虽如此,我认为蒂姆提供的是一个不错的选择。Andrej提供的答案看起来对我的实现很有用。

当然,我在发布之后就解决了我的错误<代码>^(.*?(\d*)id\s*(.*?).*=(\d*).*=(\d*)。$适用于我正在尝试的内容


话虽如此,我认为蒂姆提供的是一个不错的选择。Andrej提供的答案看起来对我的实现很有用。

请澄清您的预期输出。您可以使用3个捕获组来匹配所有数字
(\d+)id\s+\w+=(\d+)\w+\s+\w+=(\d+)
显示您在哪里添加了
=
,当前尝试没有意义。请澄清您的预期输出。您可以使用3个捕获组来匹配所有数字
(\d+)id\s+\w+=(\d+)\w+\s+\w+=(\d+)
显示您在何处添加了
=
,当前尝试没有意义。感谢Andrej。这看起来是执行我任务的好方法。非常感谢Andrej。这看起来是实现我的任务的好方法。