的第二組的所有我有點憋屈的正則表達式(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