Python 正则表达式在后面分隔数字=
我试图从下面的字符串在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” 编辑:所提供文本的预期输出将是
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。这看起来是实现我的任务的好方法。