Preg_match (unknown modifier) in sync rule

Hi guys,

I am trying to sync (create) services from an existing datasource in icinga director. Alle the prechecks (Check for changes) running fine but on “Trigger this Sync” I am facing the error:

Icinga\Module\Director\Objects\IcingaService uv2-rtt-check-(XXX/1.1.1.1): preg_match(): Unknown modifier ''

My environment:

Icinga Core 2.12.1-1
Director: 1.7.2 (git 9c95fb8680f6f389ca24ff6e41d9002185596cb3)
ipl: 0.5.0
reactbundle: 0.7.0
incubator: 0.5.0

PHP:

php -v
PHP 7.4.12 (cli) (built: Nov  3 2020 14:31:48) ( NTS )

sample data (anonymised) for my import / sync:

rtt_checks_uid rtt_checks_descr rtt_checks_ip rtt_checks_location rtt_checks_method sat_descr sat_ip sat_rtt_satid
19!1.2.3.4 some office 1.2.3.4 XXX vpn AAA 5.6.7.8 19
20!1.2.3.4 some office 1.2.3.4 XXX vpn BBB 9.10.11.12 20

key column -> rtt_checks_uid (concat in psql query)

The sync rule:

Source name Source field Destination Prio
uv2-db-rtt-checks uv2-rtt-check-(${sat_descr}/${rtt_checks_ip}) object_name
uv2-db-rtt-checks director-template-service-rtt import
uv2-db-rtt-checks hostname.domain.tld host
uv2-db-rtt-checks ${rtt_checks_descr} notes

Is that a bug?

Thx & br
Oliver

Update: I´ve found a similar behavior during editing the used service-template:

preg_match(): Unknown modifier ‘’ (AssignFilterHelper.php:153)

zones.d/director-global/service_templates.conf
template Service "director-template-service-rtt" {
    import "director-template-service-generic"

    check_command = "check_rtt"
    max_check_attempts = "2"
    retry_interval = 1s
    check_timeout = 10s
    enable_notifications = false
    vars.rtt_calc_timeframe = "5"
    vars.rtt_critical_integer = "30"
    vars.rtt_critical_percent = "50"
    vars.rtt_easy_query = "1"
    vars.rtt_influxdb_host = "1.1.1.1"
    vars.rtt_influxdb_measurement = "icmpstats_rtt"
    vars.rtt_influxdb_name = "xx"
    vars.rtt_influxdb_port = "8086"
    vars.rtt_overwrite_result = "false"
    vars.rtt_performance_data = "true"
    vars.rtt_warning_integer = "12"
}

looking into the file shows me:

protected function matchesExpression(FilterExpression $filter, $object)

{ 

...

-->>> return (bool) preg_match($pattern, $value);

...
}

The weird thing is: The error is shown but the changes have been saved after pressing the STORE button. Unfortunately this does not working during an director sync-rule import.

Solution: I had one service-group apply in director using the following filter rule:

service.name = director-apply-http-(*\/US\/*)

-> deleted -> everything is working fine. The backslash somehow caused all the troubles.