Prototype: regextract(regex, string, backref)

Return type: boolean

Description: Returns whether the anchored regex matches the string, and fills the array backref with back-references.

This function should be avoided in favor of data_regextract() because it creates classic CFEngine array variables and does not support named captures.

If there are any back reference matches from the regular expression, then the array will be populated with the values, in the manner:

$(backref[0]) = entire string
$(backref[1]) = back reference 1, etc

Arguments:

  • regex: regular expression, in the range: .*
  • string: string, in the range: .*
  • backref: string, in the range: [a-zA-Z0-9_$(){}\[\].:]+

Example:

body common control
{
      bundlesequence => { "example" };
}

bundle agent example
{
  classes:

      # Extract regex backreferences and put them in an array

      "ok" expression => regextract(
                                     "xx ([^\s]+) ([^\s]+).* xx",
                                     "xx one two three four xx",
                                     "myarray"
      );
  reports:

    ok::

      "ok - \"$(myarray[0])\" = xx + \"$(myarray[1])\" + \"$(myarray[2])\" + .. + xx";
}

Output:

R: ok - "xx one two three four xx" = xx + "one" + "two" + .. + xx

See also: data_regextract() regex_replace()