python正则表达式;12x4x67“;只匹配第二组数字

python正则表达式;12x4x67“;只匹配第二组数字,python,regex,Python,Regex,我对这个正则表达式有点迷恋(Python初学者),我这里有一个字符串“12x4x67”,我需要将数字拆分为变量,例如:长度、宽度和高度。我成功地获得了第一组。现在我需要匹配第二组。这里有一个指向我正在使用的正则表达式测试程序的链接 这是我的: 如果您的输入始终包含长度、宽度和高度这三个部分,则它仅与340中的340匹配 (?P<length>\d+)x(?P<width>\d+)x(?P<height>\d+) (?P\d+)x(?P\d+)x(?P\d+)

我对这个正则表达式有点迷恋(Python初学者),我这里有一个字符串“12x4x67”,我需要将数字拆分为变量,例如:长度、宽度和高度。我成功地获得了第一组。现在我需要匹配第二组。这里有一个指向我正在使用的正则表达式测试程序的链接

这是我的:


如果您的输入始终包含长度、宽度和高度这三个部分,则它仅与
340
中的
340
匹配

(?P<length>\d+)x(?P<width>\d+)x(?P<height>\d+)
(?P\d+)x(?P\d+)x(?P\d+)

使用命名捕获,您将能够通过命名组访问任何部件

:

重新导入
p=重新编译(r'(?p\d+)x(?p\d+)x(?p\d+))
s=“340x9x20”
m=p.搜索
如果(m):
打印(m.groupdict())
#=>{'length':'340','width':'9','height':'20'}
打印({k:int(v)代表k,v在m.groupdict().items()中)
#=>{'length':340,'width':9,'height':20}

不需要正则表达式:

length, width, height = "12x4x67".split('x')
或者,如果您更喜欢处理整数:

length, width, height = [int(s) for s in "12x4x67".split('x')]

我更喜欢分割方法,但要回答您关于regexps的问题,这将使用
\d+
查找所有发生的事件:

lwh = "340x9x20"
numbers = [int(n) for n in re.findall("\d+", lwh)]
print(numbers)       # [340,9,20]

这可以通过使用预编译的regexp进行优化。

请参阅。发现1个差异:)但是,我想最好是,您可以通过命名组访问任何部件。您可以使用和使用捕获的组#1awesome!我以前也有过同样的经历,但我只想要第二场比赛,你知道我怎样才能做到吗?或者是一个foreach循环,比如每个匹配都可以这样做?当问问题时,请展示你的工作。@Muposat我做了,链接是我的工作,它只是一个字符串,我知道规则。这太棒了,我现在如何将l的匹配变长?你能澄清一下吗
l
值可通过
m.group(“l”)
获得。那么,你可以用它做任何事情。非常感谢你的时间和耐心!这是可行的,小组的概念让我有点困惑,但我现在完全理解了!哇,这也是一个很好的解决方案,这一个不需要正则表达式,谢谢
length, width, height = [int(s) for s in "12x4x67".split('x')]
lwh = "340x9x20"
numbers = [int(n) for n in re.findall("\d+", lwh)]
print(numbers)       # [340,9,20]