re = /(?P<key>\w+) = (?P<val>[^\\]+)/m
str = '{"global_quality": "[general]\\
version = 4\\
name = Benchy Jonas\\
definition = fdmprinter\\
\\
[metadata]\\
setting_version = 6\\
type = quality_changes\\
quality_type = normal\\
\\
[values]\\
acceleration_enabled = True\\
adhesion_type = skirt\\
bridge_settings_enabled = True\\
jerk_enabled = False\\
layer_height = 0.2\\
layer_height_0 = 0.2\\
magic_spiralize = False\\
material_bed_temperature = 50\\
material_bed_temperature_layer_0 = 50\\
retraction_combing = infill\\
speed_slowdown_layers = 1\\
support_enable = True\\
support_type = buildplate\\
travel_retract_before_outer_wall = True\\
\\
", "extruder_quality": ["[general]\\
version = 4\\
name = Benchy Jonas\\
definition = fdmprinter\\
\\
[metadata]\\
setting_version = 6\\
type = quality_changes\\
quality_type = normal\\
position = 0\\
\\
[values]\\
acceleration_infill = 1000\\
acceleration_print = 500\\
acceleration_roofing = 750\\
acceleration_topbottom = 1000\\
acceleration_travel = 1500\\
acceleration_wall_0 = 500\\
acceleration_wall_x = 750\\
alternate_extra_perimeter = False\\
bottom_layers = =999999 if infill_sparse_density == 100 else math.ceil(round(bottom_thickness / resolveOrValue(\'layer_height\'), 4))\\
bottom_skin_preshrink = 1.4\\
bottom_thickness = 1.2\\
bridge_fan_speed = 75\\
bridge_fan_speed_2 = 25\\
bridge_fan_speed_3 = 33\\
brim_line_count = 2\\
brim_outside_only = False\\
coasting_enable = False\\
coasting_speed = 100\\
coasting_volume = 0.02\\
cool_fan_full_layer = 5\\
cool_fan_speed = 75\\
cool_fan_speed_max = =cool_fan_speed\\
cool_min_layer_time = 5\\
cool_min_layer_time_fan_speed_max = 20\\
cool_min_speed = 20\\
default_material_print_temperature = 230\\
fill_outline_gaps = False\\
gradual_infill_step_height = 2\\
gradual_infill_steps = 0\\
gradual_support_infill_step_height = 3\\
gradual_support_infill_steps = 1\\
infill_before_walls = False\\
infill_enable_travel_optimization = True\\
infill_line_distance = =0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == \'grid\' else (3 if infill_pattern == \'triangles\' or infill_pattern == \'trihexagon\' or infill_pattern == \'cubic\' or infill_pattern == \'cubicsubdiv\' else (2 if infill_pattern == \'tetrahedral\' or infill_pattern == \'quarter_cubic\' else (1 if infill_pattern == \'cross\' or infill_pattern == \'cross_3d\' else 1))))\\
infill_line_width = 0.5\\
infill_overlap = 5\\
infill_pattern = gyroid\\
infill_sparse_density = 7\\
infill_support_angle = 75\\
infill_support_enabled = False\\
ironing_flow = 8\\
ironing_inset = 0.25\\
ironing_line_spacing = 0.2\\
jerk_infill = 20\\
jerk_layer_0 = 7\\
jerk_print = 7\\
jerk_roofing = 10\\
jerk_support_infill = 20\\
jerk_support_interface = 20\\
jerk_topbottom = 20\\
jerk_travel = 20\\
jerk_travel_layer_0 = 7\\
jerk_wall_0 = 8\\
jerk_wall_x = 15\\
line_width = =machine_nozzle_size\\
material_diameter = 1.75\\
material_final_print_temperature = =max(-273.15, material_print_temperature - 15)\\
material_flow = 99\\
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)\\
material_print_temperature = 230\\
material_print_temperature_layer_0 = 230\\
min_infill_area = 10\\
optimize_wall_printing_order = True\\
retract_at_layer_change = False\\
retraction_amount = 0.8\\
retraction_count_max = 100\\
retraction_extra_prime_amount = 0\\
retraction_extrusion_window = =retraction_amount\\
retraction_hop = 0.2\\
retraction_hop_enabled = True\\
retraction_hop_only_when_collides = True\\
retraction_min_travel = 1\\
retraction_prime_speed = 25\\
retraction_retract_speed = 25\\
retraction_speed = 70\\
roofing_layer_count = 0\\
roofing_pattern = concentric\\
skin_no_small_gaps_heuristic = False\\
skin_overlap = =5 if top_bottom_pattern != \'concentric\' else 0\\
skirt_brim_line_width = =line_width\\
skirt_brim_minimal_length = 175\\
skirt_brim_speed = 20\\
skirt_gap = 5\\
skirt_line_count = 3\\
speed_equalize_flow_enabled = False\\
speed_equalize_flow_max = 60\\
speed_infill = 50\\
speed_ironing = 60\\
speed_layer_0 = 20\\
speed_print = 50\\
speed_roofing = 50\\
speed_support = 50\\
speed_support_infill = 60\\
speed_support_interface = 50\\
speed_topbottom = 50\\
speed_travel = 175\\
speed_wall = =speed_print / 2\\
speed_wall_0 = 25\\
speed_wall_x = =speed_wall * 2\\
support_angle = 67\\
support_infill_rate = 10\\
support_infill_sparse_thickness = =resolveOrValue(\'layer_height\')\\
support_interface_density = 50\\
support_interface_enable = True\\
support_interface_pattern = lines\\
support_interface_skip_height = 0.2\\
support_line_width = 0.5\\\\nsupport_minimal_diameter = 2\\
support_offset = 0.4\\
support_pattern = zigzag\\
support_roof_height = 1\\
support_top_distance = =extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, \'support_z_distance\')\\
support_tower_diameter = 5\\
support_tower_roof_angle = 30\\
support_use_towers = True\\
support_wall_count = 1\\
support_xy_distance = 0.6\\
support_xy_distance_overhang = 0.5\\
support_xy_overrides_z = xy_overrides_z\\
support_z_distance = 0.2\\
top_bottom_pattern = lines\\
top_bottom_pattern_0 = lines\\
top_bottom_thickness = 1.6\\
top_layers = =0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue(\'layer_height\'), 4))\\
top_skin_preshrink = 1.2\\
top_thickness = 1.6\\\\ntravel_avoid_other_parts = False\\
travel_avoid_supports = True\\
travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled\\
travel_compensate_overlapping_walls_enabled = False\\
travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled\\
wall_0_wipe_dist = =machine_nozzle_size / 2\\
wall_line_count = 3\\
wall_line_width_0 = 0.4\\
wall_line_width_x = =wall_line_width\\
wall_thickness = 2\\
xy_offset_layer_0 = -0.05\\
z_seam_corner = z_seam_corner_inner\\
z_seam_relative = True\\
z_seam_type = back\\
z_seam_x = -250\\
z_seam_y = -30\\
\\
"]}
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html