python正则表达式" 12x4x67"仅匹配第二组数字

时间:2015-12-02 15:21:17

标签: python regex

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

这是我的regex

\d+

它仅匹配340中的340x9x20

3 个答案:

答案 0 :(得分:2)

如果您的输入始终包含全部3个部分 - 长度,宽度和高度 - 您可以使用

(?P<l>\d+)x(?P<w>\d+)x(?P<h>\d+)

请参阅regex demo

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

示例:

import re
p = re.compile(r'(?P<l>\d+)x(?P<w>\d+)x(?P<h>\d+)')
test_str = "340x9x20"
m = p.search(test_str)
if (m):
    print m.group("w") # => prints "9" (width)

答案 1 :(得分:2)

不需要正则表达式:

length, width, height = "12x4x67".split('x')

或者如果您更喜欢处理整数:

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

答案 2 :(得分:1)

我更喜欢拆分方法,但要回答有关正则表达式的问题 - 这将使用\d+来查找所有出现的情况:

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

这可以通过使用预编译的正则表达式进行优化。