glob2rx                package:utils                R Documentation

Change Wildcard or Globbing Pattern into Regular Expression

Description:

     Change _wildcard_ aka _globbing_ patterns into the corresponding
     regular expressions ('regexp').

Usage:

     glob2rx(pattern, trim.head = FALSE, trim.tail = TRUE)

Arguments:

 pattern: character vector

trim.head: logical specifying if leading '"^.*"' should be trimmed from
          the result.

trim.tail: logical specifying if trailing '".*$"' should be trimmed
          from the result.

Details:

     This takes a wildcard as used by most shells and returns an
     equivalent regular expression.  '?' is mapped to '.' (match a
     single character), '*' to '.*' (match any string, including an
     empty one), and the pattern is anchored (it must start at the
     beginning and end at the end).  Optionally, the resulting regexp
     is simplified.

     Note that now even '(', '[' and '{' can be used in 'pattern', but
     'glob2rx()' may not work correctly with arbitrary characters in
     'pattern'.

Value:

     A character vector of the same length as the input 'pattern' where
     each wildcard is translated to the corresponding regular
     expression.

Author(s):

     Martin Maechler, Unix/sed based version, 1991; current: 2004

See Also:

     'regexp' about regular expression, 'sub', etc about substitutions
     using regexps.

Examples:

     stopifnot(glob2rx("abc.*") == "^abc\\.",
               glob2rx("a?b.*") == "^a.b\\.",
               glob2rx("a?b.*", trim.tail=FALSE) == "^a.b\\..*$",
               glob2rx("*.doc") == "^.*\\.doc$",
               glob2rx("*.doc", trim.head=TRUE) == "\\.doc$",
               glob2rx("*.t*")  == "^.*\\.t",
               glob2rx("*.t??") == "^.*\\.t..$",
               glob2rx("*[*")  == "^.*\\["
     )

