Regular Expressions may be used in file masks, address masks, Modem Responses and File-Boxes configuration, i.e. anywhere where generic masks are allowed (though Modem Responses do not allow generic masks)
Argus uses Perl-Compatible Regular Expressions library (c) 1997-1999 University of Cambridge. This library was written by Philip Hazel <ph10@cam.ac.uk>, University Computing Service, New Museums Site, Cambridge CB2 3QG, England, Phone: +44 1223 334714.
Information about Perl-Compatible Regular Expressions (PCRE) syntax is given in a separate chapter, written by Philip Hazel.
To insert a Regular Expression, use '~' character as a marker. Next character (following '~' marker) will be used as a delimiter to define the end of a Regular Expression. Any text found between delimiting characters will be treated as a Regular Expression.
The syntax is:
before~#regularexpression#after
where "before" and "after" is optional text that will be compared as a generic mask (a character matches itself, '?' matches any character, '*' matches a sequence of characters).
"regularexpression" is a text of a Regular Expression.
'#' - delimiter character.
The following string (found where a file mask should be)
~#cat(aract|erpillar|)\..*#
will match a file named "cat", "cataract", or "caterpillar", with any extension.
the above example is equivalent to
~#cat(aract|erpillar|)#.*
because the text after delimiter (".*") is treated as a generic mask, i.e. '.' matches a dot character and '*' matches any sequence of characters.
Here is another example of using regular expressions in Modem Responses:
~#^RING(\x20\d)?$#
This will match word "RING", optionally following a digit after space character.
Because of space (or other) character may be used as a separator in Argus Configuration String Grids, such character should not occur in non-escaped form inside a regular expression. This is because of separator characters in a string grid (e.g. space) have greater priority than a regular expression delimiters (e.g. '#').
To avoid using string grid separator character in a Regular Expression, use hex codes (e.g. \x20 for space character) or corresponding patterns (e.g. \s , that will match any whitespace character).
If you plan using '#' character within a regular expression, you may also use it's hex code, but better way would be choosing another delimiter.
~`^RING(\x20#\d)?$`
To insert ~ character into a generic mask, double it to avoid using it as a regular expression marker.
Note that you don't need to anchor your regular expressions (using '^' and '$') in file masks - they would be anchored automatically. If you need to skip some characters before of after, use ".*")
The settings of PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and PCRE_EXTENDED options (described in separate chapter) can be changed from within the pattern by a sequence of Perl option letters enclosed between "(?" and ")", although the following default options are used:
When matching file names and path names - PCRE_CASELESS.
When matching modem responses - PCRE_MULTILINE, because the regular expression is matching against the entire multi-line input data stream coming from a modem.
In all other cases none of PCRE options are set by default.