Cleaned up the section on use of regular expressions.
1 parent 8388037 commit a465e6790db4114547e1c5927717e5b216407b2e
@tundra tundra authored on 29 Mar 2010
Showing 1 changed file
View
34
tren.rst
Ordinarily **tren** treats both the old string you specify with the
``-r`` option *literally*. However, it is sometimes handy to be able
to write a regular expression to specify what you want replaced. If
you specify the ``-x`` option, **tren** will treat your old string as
a Python style regex, compile it (or try to anyway!) and use it to
a regular expresion, compile it (or try to anyway!) and use it to
select which strings to replace. This makes it much easier to rename
files that have repeated characters or patterns, and groups of files
that have similar, but not idential strings in their names you'd like
to replace.
 
Say you have a set of files that are similar, but not idential in
Say you have a set of files that are similar, but not identical in
name, and you want to rename them all::
 
sbbs-1.txt
sbbbs-2.txt
expression. This effectively means that with ``-x`` processing
enabled you can include *both* regular expressions and literal text in
your "old string" specification. The only requirement is that the
string taken as a whole must be a valid Python regular expression. If
it is not, **tren** will display an error message to that effect.
it is not, **tren** will display an error message to that effect.
 
For more detail on the Python regular expression syntax, see:
 
http://docs.python.org/library/re.html
 
 
Because Python regular expressions can make use of the ``=`` symbol,
you need a way to distinguish between an ``=`` used in a regular
exression and the same symbol used to separate the old and new
operands for the ``-r`` option. Where this symbol needs to appear in
a regular expression, it has to be escaped like this: ``\=``.
 
Regular expression processing is unaffected by the ``-g / -1`` (global
rename) and ``-c / -C`` (ignore case) options. That's because there
are regular expression mechanisms for achieving the same thing. More
importantly, if you've selected regular expression matching, it's
probably because you want very fine grained control of the renaming
defined by the regex. In short, regular expression matching always
takes place on the *original characters* of the target portion of the
name and does replacement as called for in the regex itself.
As with literal string renaming, regular expression renaming requests
honor both the case-sensitivity options (``-C`` and ``-c``) as well
as the instance option, ``-i``. So, for example::
 
tren.py -x -ci -1 -r Bb+=X sbbsbbbsbbbbsbbbbbs
 
You'll rename the file to ``sbbsbbbsbbbbsXs``
 
 
 
Changing The Renaming Separator & Escape Characters
===================================================
-----------------------------
 
::
 
$Id: tren.rst,v 1.156 2010/03/29 03:00:47 tundra Exp $
$Id: tren.rst,v 1.157 2010/03/29 15:49:55 tundra Exp $
 
You can find the latest version of this program at:
 
http://www.tundraware.com/Software/tren