Rename files using regular expressions
regEx.IgnoreCase = True
regEx.Global = True
This is normally not necessary, as you can put more than one occurrence of a string in the pattern.
regexprename P "Xmas 2008 "
The resulting file is: Xmas 2008 0101021.JPG
Note the intended space after 2008. Also note that the renaming works only on the first P, not on the second.
regexprename "Xmas 2008 (.*\.)JPG$" xmas_2008_$1jpg
The resulting file is: xmas_2008_0101021.jpg
The parenthesized group included the long number and the period. It is put into the result with the code $1.
Note that the literal period in the pattern, the first parameter, has to be escaped with a preceding backslash: \.
This is not necessary in the replacement string, the second parameter.
An alternative, more flexible command that yields exactly the same result here would be:
regexprename X(.*?)\s+(.*?)\s+(.*\.)JPG$ x$1_$2_$3jpg
You could drop the JPG$ from the pattern string if you were sure that all files ended in: .JPG
regexprename ^.*\((.*)\)(\..*) x00$1$2
The files should now be named like this: x000.txt, x001.txt, x002.txt, ..., x00127.txt
Note that we didn't need the end-of-string designator $ at the end of the pattern, because the .* pattern is "greedy" and covers the end anyway. However, the pattern would work just as well like this:
^.*\((.*)\)(\..*)$
i.e. with the end-of-string marker $.
regexprename x.*(\d{3}\..*) x$1
The files should now be named like this: x000.txt, x001.txt, x002.txt, ..., x127.txt
This is what we wanted to achieve.
Note that we needed neither the beginning of string marker ^, because the x is unambiguous, nor the end of string marker $, because the .* expression is "greedy". However, the pattern would work just as well with begin and end of string markers:
^x.*(\d{3}\..*)$
Character | Description |
---|---|
\ |
Marks the next character as either a special character or a literal. For example, "n" matches the character "n". "\n" matches a newline character. The sequence "\\" matches "\" and "\(" matches "(". |
^ |
Matches the beginning of input. |
$ |
Matches the end of input. |
* |
Matches the preceding character zero or more times. For example, "zo*" matches either "z" or "zoo". |
+ |
Matches the preceding character one or more times. For example, "zo+" matches "zoo" but not "z". |
? |
Matches the preceding character zero or one time. For example, "a?ve?" matches the "ve" in "never". |
. |
Matches any single character except a newline character. |
(pattern) |
Matches pattern and remembers the match. The matched substring can be retrieved from the resulting Matches collection, using Item [0]...[n]. To match parentheses characters ( ), use "\(" or "\)". |
x|y |
Matches either x or y. For example, "z|wood" matches "z" or "wood". "(z|w)oo" matches "zoo" or "wood". |
{n} |
n is a nonnegative integer. Matches exactly n times. For example, "o{2}" does not match the "o" in "Bob," but matches the first two o's in "foooood". |
{n,} |
n is a nonnegative integer. Matches at least n times. For example, "o{2,}" does not match the "o" in "Bob" and matches all the o's in "foooood." "o{1,}" is equivalent to "o+". "o{0,}" is equivalent to "o*". |
{ n , m } |
m and n are nonnegative integers. Matches at least n and at most m times. For example, "o{1,3}" matches the first three o's in "fooooood." "o{0,1}" is equivalent to "o?". |
[ xyz ] |
A character set. Matches any one of the enclosed characters. For example, "[abc]" matches the "a" in "plain". |
[^ xyz ] |
A negative character set. Matches any character not enclosed. For example, "[^abc]" matches the "p" in "plain". |
[ a-z ] |
A range of characters. Matches any character in the specified range. For example, "[a-z]" matches any lowercase alphabetic character in the range "a" through "z". |
[^ m-z ] |
A negative range characters. Matches any character not in the specified range. For example, "[m-z]" matches any character not in the range "m" through "z". |
\b |
Matches a word boundary, that is, the position between a word and a space. For example, "er\b" matches the "er" in "never" but not the "er" in "verb". |
\B |
Matches a non-word boundary. "ea*r\B" matches the "ear" in "never early". |
\d |
Matches a digit character. Equivalent to [0-9]. |
\D |
Matches a non-digit character. Equivalent to [^0-9]. |
\f |
Matches a form-feed character. |
\n |
Matches a newline character. |
\r |
Matches a carriage return character. |
\s |
Matches any white space including space, tab, form-feed, etc. Equivalent to "[ \f\n\r\t\v]". |
\S |
Matches any nonwhite space character. Equivalent to "[^ \f\n\r\t\v]". |
\t |
Matches a tab character. |
\v |
Matches a vertical tab character. |
\w |
Matches any word character including underscore. Equivalent to "[A-Za-z0-9_]". |
\W |
Matches any non-word character. Equivalent to "[^A-Za-z0-9_]". |
\num |
Matches num, where num is a positive integer. A reference back to remembered matches. For example, "(.)\1" matches two consecutive identical characters. |
\ n |
Matches n, where n is an octal escape value. Octal escape values must be 1, 2, or 3 digits long. For example, "\11" and "\011" both match a tab character. "\0011" is the equivalent of "\001" & "1". Octal escape values must not exceed 256. If they do, only the first two digits comprise the expression. Allows ASCII codes to be used in regular expressions. |
\xn |
Matches n, where n is a hexadecimal escape value. Hexadecimal escape values must be exactly two digits long. For example, "\x41" matches "A". "\x041" is equivalent to "\x04" & "1". Allows ASCII codes to be used in regular expressions. |
$n | Inserts nth group into replace string (\n in Unix/Linux/Perl). Use only in replace string, not in pattern. |