Chassis switches use ports_config keys like 'max_per_slot_100G_QSFP28' (speed in the middle), not just '100G_QSFP28'. The '^[0-9.]+G' anchor failed -> port_speed NULL -> 0 suggestions (e.g. Cisco 8818 router). Now extracts the speed token wherever it sits before the cage. Cisco 8818: 0 -> 55, all Cisco-codeable, max 400G.