的第二组的所有我有点憋屈的正则表达式(Python的初学者),我这里有一个字符串“12x4x67”,我需要了分裂数为变量,例如:长度,宽度和高度。我已经成功地获得了第一组。现在我需要匹配第二组。这里是我用我做的例子使用的正则表达式测试器的链接。蟒蛇正则表达式“12x4x67”比赛只有数
这是我regex:
\d+
只匹配340x9x20
340
。
的第二组的所有我有点憋屈的正则表达式(Python的初学者),我这里有一个字符串“12x4x67”,我需要了分裂数为变量,例如:长度,宽度和高度。我已经成功地获得了第一组。现在我需要匹配第二组。这里是我用我做的例子使用的正则表达式测试器的链接。蟒蛇正则表达式“12x4x67”比赛只有数
这是我regex:
\d+
只匹配340x9x20
340
。
如果输入总是有全部三个部分 - 长度,宽度和高度 - 您可以使用
(?P<l>\d+)x(?P<w>\d+)x(?P<h>\d+)
使用命名捕获,你就可以通过访问任何部件一个命名组。
例子:
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)
无需正则表达式:
length, width, height = "12x4x67".split('x')
或者如果你喜欢处理整数:
length, width, height = [int(s) for s in "12x4x67".split('x')]
哇这也是一个不错的解决方案,没有正则表达式所需的这一个,谢谢 – IceTimux
我宁愿分裂的做法,而是要回答你的关于正则表达式的问题 - 这将使用\d+
找到所有发生:
lwh = "340x9x20"
numbers = [int(n) for n in re.findall("\d+", lwh)]
print(numbers) # [340,9,20]
这可以通过使用预编译的正则表达式进行优化。
见[此演示](https://regex101.com/r/hJ1lU8/4)。有1个差:)然而,我想['(ΔP \ d +)×(2 P \ d +)×(2 P \ d +)'](https://regex101.com/r/mN3rS3/1 )会更好,您将可以通过指定组访问任何部件。 –
可以使用['\ d + \ d +(\ d +)'](https://regex101.com/r/hJ1lU8/7)和使用捕获的组#1 – anubhava
真棒!我之前也有同样的事情,但我只想要第二场比赛,你知道我怎么能做到这一点?或者像每个比赛一样的foreach循环做到这一点? – IceTimux