### Godot version

3b086aa06

### System information

ArchLinux x11

### Issue description

```gdscript
extends Node

@export_group("My Properties")
@export var number = 3
@export var string = ""

@export_group("Prefixed Properties", "prefix_")
@export var prefix_number = 3
@export var prefix_string = ""

@export_group("", "")
@export var ungrouped_number = 3
```

![image](https://user-images.githubusercontent.com/70787919/214983963-528c415b-745b-47fc-9777-36ebe31a3060.png)


### Steps to reproduce

- create script
- @export_group
- go inspector

### Minimal reproduction project

‮
can_break = true;
	can_continue = true;
	SuiteNode *suite = alloc_node<SuiteNode>();
	if (n_for->variable) {
		const SuiteNode::Local &local = current_suite->get_local(n_for->variable->name);
		if (local.type != SuiteNode::Local::UNDEFINED) {
			push_error(vformat(R"(There is already a %s named "%s" declared in this scope.)", local.get_name(), n_for->variable->name), n_for->variable);
		}
		suite->add_local(SuiteNode::Local(n_for->variable, current_function));
	}
	n_for->loop = parse_suite(R"("for" block)", suite);
	n_for->loop->is_loop = true;
	complete_extents(n_for);
	
	can_break = could_break;
	can_continue = could_continue;
	return n_for;
}
GDScriptParser::IfNode *GDScriptParser::parse_if(const String &p_token) {
	IfNode *n_if = alloc_node<IfNode>();
	n_if->condition = parse_expression(false);
	if (n_if->condition == nullptr) {
		push_error(vformat(R"(Expected conditional expression after "%s".)", p_token));
	}
	consume(GDScriptTokenizer::Token::COLON, vformat(R"(Expected ":" after "%s" condition.)", p_token));
	n_if->true_block = parse_suite(vformat(R"("%s" block)", p_token));
	n_if->true_block->parent_if = n_if;
	if (n_if->true_block->has_continue) {
		current_suite->has_continue = true;
	}