Supported Regular Expressions Syntax
Privilege Management for Windows can control applications at a granular level by using regular expression syntax. Privilege Management for Windows uses the ATL regular expression library CAtlRegExp. Below is a summary of the regular expression syntax used by this library.
Metacharacter 
Meaning 
Example 

Any character except [\^$.?*+() 
All characters except the listed special characters match a single instance of themselves. To match one of these listed characters use a backslash escape character (see below). 
"abc" matches "abc" 
\ (backslash) 
Escape character: interpret the next character literally. 
"a\+b" matches "a+b" 
. (dot) 
Matches any single character. 
"a.b" matches "aab", "abb" or "acb", etc. 
[ ] 
Indicates a character class. Matches any character inside the brackets (for example, [abc] matches "a", "b", and "c"). 
"[abc]" matches "a", "b", or "c" 
^ (caret) 
If this metacharacter occurs at the start of a character class, it negates the character class. A negated character class matches any character except those inside the brackets (for example, [^abc] matches all characters except "a", "b", and "c"). If ^ is at the beginning of the regular expression, it matches the beginning of the input (for example, ^[abc] will only match input that begins with "a", "b", or "c"). 
"[^abc]" matches all characters except "a", "b", and "c" 
 (minus character) 
In a character class, indicates a range of characters (for example, [09] matches any of the digits "0" through "9"). 
"[09]" matches any of the digits "0" through "9" 
? 
Indicates that the preceding expression is optional: it matches once or not at all (for example, [09][09]? matches "2" and "12"). 
"ab?c" matches "ac" or "abc" 
+ 
Indicates that the preceding expression matches one or more times (for example, [09]+ matches "1", "13", "666", and so on). 
"ab+c" matches "abc" and "abbc", "abbbc", etc. 
* (asterisk) 
Indicates that the preceding expression matches zero or more times 
"ab*c" matches "ac" and "abc", "abbc", etc. 
 (vertical pipe) 
Alternation operator: separates two expressions, exactly one of which matches. 
"ab" matches "a" or "b" 
??, +?, *? 
Nongreedy versions of ?, +, and *. These match as little as possible, unlike the greedy versions which match as much as possible. Example: given the input "<abc><def>", <.*?> matches "<abc>" while <.*> matches "<abc><def>". 
Given the input "<abc><def>", <.*?> matches "<abc>" while <.*> matches "<abc><def>". 
( ) 
Grouping operator. Example: (\d+,)*\d+ matches a list of numbers separated by commas (such as "1" or "1,23,456"). 
"(One)(Two)" matches "One" or "Two" 
{ } 
Indicates a match group. The actual text in the input that matches the expression inside the braces can be retrieved through the CAtlREMatchContext object. 

\ 
Escape character: interpret the next character literally (for example, [09]+ matches one or more digits, but [09]\+ matches a digit followed by a plus character). Also used for abbreviations (such as \a for any alphanumeric character; see table below). If \ is followed by a number n, it matches the nth match group (starting from 0). Example: <{.*?}>.*?</\0> matches "<head>Contents</head>". Note that in C++ string literals, two backslashes must be used: "\\+", "\\a", "<{.*?}>.*?</\\0>". 
<{.*?}>.*?</\0> matches "<head>Contents</head>" 
$ 
At the end of a regular expression, this character matches the end of the input. Example: [09]$ matches a digit at the end of the input. 
[09]$ matches a digit at the end of the input 
 
Alternation operator: separates two expressions, exactly one of which matches (for example, Tthe matches "The" or "the"). 
Tthe matches "The" or "the") 
! 
Negation operator: the expression following ! does not match the input. Example: a!b matches "a" not followed by "b". 
a!b matches "a" not followed by "b" 