What is PowerPointPipe?

File Help Running PowerPointPipe Screens: Files to process Actions Options Restart Go Status

Subscribe
to our newsletter

Home

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Just imagine - next time your organization changes its phone number, address, web site or CEO - just run PowerPointPipe across your file server or website to fix all affected documents in one hit.

Use it for...

  • Changing your organization's phone number, address, web site or CEO
  • Performing server consolidations where document links need updating
  • Server renaming or replacement where document links need updating
  • Changing part numbers or SKUs across multiple files
  • Removing digitized signatures from documents prior to converting them to PDF and placing them on the web
  • Translating documents
  • Correcting OCR (scanned) documents
  • Detecting 'TOP SECRET' documents that have been saved in the wrong folder (by security identifiers located in headers)
  • and much more.

Translators can use PowerPointPipe's grid to define multiple search/replace pairs.

See also

Features
 New features in this release

Contact Us Support Community (online) FAQ, Tutorials and User Guides (online) Submit feedback on this topic
Copyright © 1999-2020 DataMystic. All rights reserved.


Features

to our newsletter

Home

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

PowerPointPipe takes ALL the hard work out of replacing text across multiple Microsoft PowerPoint presentations. Just imagine - next time your organization changes its phone number, address, web site or CEO - just run PowerPointPipe across your file server or website to fix all affected presentations in one hit.

[ user benefits ]

  • Fast!
  • No limit on the number of presentations processed - use it across an entire file server or web server
  • Translators can import search/replace lists from Excel, CSV- or Tab-delimited files
  • Easy to use with integrated online help
  • Supports the same search and replace options as Microsoft PowerPoint
  • Stand-alone - doesn't integrate directly with PowerPoint so it doesn't destabilize your installation
  • Translations are available for other languages

[ features ]

  • Handles Unicode (foreign language) search and replace
  • Handles multiple searches at the same time
  • Search and replace with all PowerPoint's options such as Match Case, Match Whole Word etc
  • Handles any number of sub folders
  • Control the presentation types used - so you can process .ppt, or any custom presentation type
  • Can be automated via the command line
  • Handles password-protected presentations - these get flagged for manual follow-up
  • Search-only mode
  • The original file date and time stamp can be preserved.
  • Easy to install/uninstall
    •

See also

What is PowerPointPipe?
 New features in this release


What's New in PowerPointPipe v6.4  - August 14, 2024
===================================================

* Minor bug fixes and security patches.

What's New in PowerPointPipe v6.3  - July 28, 2021
=================================================

* Fixed periodic reprompting for license key information.

What's New in PowerPointPipe v6.2.2  - December 2, 2020
======================================================

* Resolved license manager connection issues by reverting SSL changes for
license manager.

What's New in PowerPointPipe v6.2.1 -  - November 2020
=====================================================

* Fixed memory issues with x64 registered versions.

What's New in PowerPointPipe v6.2 - 1 - October, 2020
====================================================

* Fixed issue with HTML help component preventing normal termination.

What's New in PowerPointPipe v6.1.1 - 3 - September, 2020
========================================================

* Fixed file missing from install borlndmm.dll.

What's New in PowerPointPipe v6.1 - 2 - September, 2020
======================================================

*	License manager now handles key renewal.
* 	Updated ribbon controls.

What's New in PowerPointPipe v5.9.1  - July 11, 2020
===================================================

*	Fixed issue with saving settings in Lite Edition.

What's New in PowerPointPipe v5.9  - June 19, 2020
=================================================

*	Fixed issue saving restart files when settings have not been saved.
*	Updated regex component.
*	Fixed file modes for server editions.

What's New in PowerPointPipe v5.8  - February 29, 2020
=====================================================

* Improvements to grid editing.

What's New in PowerPointPipe v5.7  - March 5, 2019
=================================================

* Updated editing grid to be more user-friendly.
* Fixed error where evaluation files were deleted if backup mode was selected
and the status window was closed without choosing to restore or delete the
backup files.

What's New in PowerPointPipe v5.6  - February 16, 2019
=====================================================

* Updated license manager code.

What's New in PowerPointPipe v5.5  - June 4, 2018
================================================

* Fixed error with Search Only mode.

What's New in PowerPointPipe v5.4  - October 18, 2016
====================================================

* Fixed export error.

What's New in PowerPointPipe v5.3  - August 16, 2016
===================================================

* New warning display if MS PowerPoint is currently running, with a button kill
it (tempting, I know)
* Removed numbering from status dialog tabs as this was confusing.
* Look In field now shows count of number of locations selected.
* Fixed SharePoint URL dialog not allowing https:// links.

What's New in PowerPointPipe v5.2.1  - July 11, 2016
===================================================

* Rebuild to remove PROGRAMMING ERROR bug.

What's New in PowerPointPipe v5.2  - June 23, 2016
=================================================

* Now can find and replace in OpenOffice presentations (*.odp)
* Enhanced and improved user interface.
* Updated internal libraries for pattern matching.

What's New in PowerPointPipe v5.1  - March 24, 2016
==================================================

* Can now use macros in the replacement text: @inputFilename@ or @filename@
@fullInputFilename, @inputPath, @inputExtension
@clipboard
@time, @date, @datetime
@_year, @_month, @_day
@_hour, @_minute, @_second
@randomdigit, @randomletter
@ENV_varname
* Can now specify which property should be modified or replaced by preceding it
with [fieldname] eg
  Search fields for: [Author]Simon   Replace With: Lisa

What's New in PowerPointPipe v5.0  - March 11, 2016
==================================================

* Now allows the subaddress (anchor) part of hyperlinks to be modified.
* New warning when all Search Locations checked (slows job down).
* New checks if the hyperlink change does not get saved if the hyperlink is
invalid or the destination cannot be found)
 - Separated the restart controls into a new tab.

What's New in PowerPointPipe v4.9.3  - January 22, 2016
======================================================

* Added Excel import messages regarding ending at the first blank "Find What"
cell.

What's New in PowerPointPipe v4.9.2  - December 22, 2015
=======================================================

* Fixed Activate error with "Options\Keep Microsoft PowerPoint visible while
changes are being made."

What's New in PowerPointPipe v4.9.1  - August 3, 2015
====================================================

* Major revamp of user interface.
* Fixed "List index out of bounds" error on run.
* Fixed drag and drop and DDE processing.
* Fixed Language dialog and Job Cancel alert appearing underneath other
windows.

What's New in PowerPointPipe v4.9  - May 18, 2015
================================================

* Fixed settings error on startup.

What's New in PowerPointPipe v4.8  - March 3, 2015
=================================================

* Fixed intermittent XML loading/saving error on x64 systems.
* Fixed error with /I= command line option not loading the search-replace list.

What's New in PowerPointPipe v4.7  - November 26, 2014
=====================================================

* Fixed Save from removing leading and trailing whitespace.
* Fixed Recent settings from not appearing in the Recent files history.

What's New in PowerPointPipe v4.6  - October 23, 2014
====================================================

* Search items can now be sorted by clicking on any of the column headers -
great for translators.
* Fixed issues with Lite Editions.
* Improved detection and display of non-English languages.
* Updated to EasyPattern v2.9 and Perl regex libraries.
* Incremental search when the search grid is selected - great for large search
lists.

What's New in PowerPointPipe v4.5  - July 11, 2014
=================================================

* Fixed problem with invalid EasyPattern/Perl regex search locations being
removed, and then not being processed against valid search locations such as
hyperlinks.

What's New in PowerPointPipe v4.4  - June 13, 2014
=================================================

* Files To Process can now set the Start or End date for files to be included.
* New! Now attach directly to SharePoint sites (evaluation, and SharePoint
Edition only).

What's New in PowerPointPipe v4.3  - March 7, 2014
=================================================

* Now can handle search and replace inside tables.

What's New in PowerPointPipe v4.2.1  - February 28, 2014
=======================================================

* Restart control now restarts on the next file AFTER the restart filename -
making it easier to skip problem files without having to guess which file is
next.

What's New in PowerPointPipe v4.2  - October 30, 2013
====================================================

* Now shows '(more pending)' next to the file count if more files remain to be
counted, so users aren't misled that only 1000 files will be processed.

What's New in PowerPointPipe v4.1  - September 3, 2013
=====================================================

* Options\Import Search/Replace List and Actions Tab\Load A Search/Replace List
From This File now work with multi-line Tab and CSV data.
* Fixed range check error on loading replace highlight color fields from import
files.

What's New in PowerPointPipe v4.0.3  - July 29, 2013
===================================================

* Improved installer for floating version.
* Better error messages when Microsoft Excel is not available to load external
.xls search/replace lists.
* Better detection of missing Microsoft PowerPoint object or mis-matching
bitness (x32/x64) between PowerPointPipe and Microsoft PowerPoint.

What's New in PowerPointPipe v4.0.2  - June 8, 2013
==================================================

* Fixed problem with evaluation where it crashed if you gave it more than 20
documents to process, and it also restricted the evaluation to only one file.

What's New in PowerPointPipe v4.0.1  - May 1, 2013
=================================================

* Fixed integer overflow errors under x64.

What's New in PowerPointPipe v4.0  - April 30, 2013
==================================================

* Dual x32/x64 release.
* The files to be processed are now gathered in parallel with document
processing - so processing starts far more quickly, especially for large sets
of files.
* Improved handling of Unicode filenames.
* Faster importing of large search/replace lists.
* Quicker to cancel operations with large search/replace lists.
* Fixed bug with change detected even when nothing replaced - occurred with
text boxes.

What's New in PowerPointPipe v3.9  - August 28, 2012
===================================================

* Status dialog now opens file on double-click of subsidiary search/replace
phrases. Right-clicking on a filename or phrase now gives a menu to open the
file, or its containing folder.
* Now supports Open Document Impress file type .odp.
* Fixed bug where the Replacement Text for subsequent replacements is altered
incorrectly when Prompt on Replace is checked, and [Replace (File)] or
[Replace (Job)] is pressed in response to a replacement.

What's New in PowerPointPipe v3.8  - January 24, 2012
====================================================

* When Microsoft PowerPoint is restarted, PowerPointPipe now re-applies the
visibility settings to show or hide Microsoft PowerPoint.
* Now skips ~*.* temporary files and .lnk files.

What's New in PowerPointPipe v3.7  - January 17, 2012
====================================================

* Now handles shapes that include tables.

What's New in PowerPointPipe v3.6.2  - October 18, 2011
======================================================

* Added application link to help file for correct import file format.

What's New in PowerPointPipe v3.6.1  - September 15, 2011
========================================================

* Fixed 'Prevent overlap' replace mode.
* Fixed GUI issue with selecting a cell to edit.
* Fixed Tips of the Day.

What's New in PowerPointPipe v3.6  - July 22, 2011
=================================================

* New option to disable AddIns - previously AddIns were always disabled, but
this new option allows them to remain enabled so that they can assist with
the replacement process if required.
* New option to prevent overlapping of subsequent search replaces. This is very
handy when the replace terms appear in subsequent search terms and two
replacements would have occurred.
* Improved installer to not require Admin user.

What's New in PowerPointPipe v3.5.1  - May 3, 2011
=================================================

* New help options and hints for connecting to SharePoint.

What's New in PowerPointPipe v3.5  - May 2, 2011
===============================================

* Passwords are now stored encrypted.

What's New in PowerPointPipe v3.4  - April 1, 2011
=================================================

* Now detects and disables the 'Update Links' dialog.
* Progress timer is now disabled while opening a file - so Microsoft PowerPoint
will not be terminated when opening a large file.

What's New in PowerPointPipe v3.3.3  - January 27, 2011
======================================================

* New log message when 0 occurrences are found and Force Save is on.
* Fixed string list error when using List of files.
* More Unicode improvements.

What's New in PowerPointPipe v3.3.2  - December 20, 2010
=======================================================

* Improved hyperlink and OLE/DDE scanning speed.
* Fixed scanning issue when slides have no shapes.
* OLE links now included in Hyperlink Report.

What's New in PowerPointPipe v3.3.1  - December 16, 2010
=======================================================

* Fixed installer issue.

What's New in PowerPointPipe v3.3  - December 13, 2010
=====================================================

* Errors on final Save are now trapped to prevent errors with File Locking and
SharePoint.
* The row number column is now resizable - allowing row numbers larger than 100
to be displayed.
* Fixed bug where the timer that checks if Microsoft PowerPoint is still
responding did not re-trigger after the first failure of Microsoft
PowerPoint.
* Link Reports now ignore empty hyperlinks, making it easier to identify
unchanged links.
* Now can restart at a specified file.
* New option to Accept All Revisions before replacing - these can prevent
phrases from being found.
* Hyperlink report is now available in the Save Report option for output types
CSV, TAB and HTML. Previously it was only available for XML.
* OLE Links are now included in the Hyperlink report.
* Unicode filename support.

What's New in PowerPointPipe v3.2.1  - June 7, 2010
==================================================

* New option to Skip Prompting if the replacement is identical.
* Now shows error dialog if the default save location (in My Documents) cannot
be written to, and exits gracefully.
* Standardized open/save dialogs now used throughout.

What's New in PowerPointPipe v3.2  - April 9, 2010
=================================================

* New Check All/Uncheck All buttons to set the Look In locations.
* New Insert row button.
* Better install under Vista/Windows 7 - no admin required to install or run.

What's New in PowerPointPipe v3.1.6  - February 18, 2010
=======================================================

* Microsoft PowerPoint now kept visible better if 'Keep Visible' option
checked.
* File associations now just for .ppt and .pptx files.
* 'Prompt on Replace' option now displays the Confirmation dialog even if the
found text and its replacement are identical - making search-only far easier.

What's New in PowerPointPipe v3.1.5  - August 1, 2009
====================================================

* Fixed minor bug.

What's New in PowerPointPipe v3.1.4  - July 31, 2009
===================================================

* Improved handling of Microsoft PowerPoint restarts.

What's New in PowerPointPipe v3.1.3  - June 9, 2009
==================================================

* Logs now include a sequential file number.
* Fixed connection to help file.
* Fixed installer not copying files.
* Fixed settings not being saved in My Documents folder.

What's New in PowerPointPipe v3.1.2  - May 15, 2009
==================================================

* Now searches inside each shape contained with a grouped shape e.g. for
Links/OLE/DDE etc.

What's New in PowerPointPipe v3.1.1  - April 28, 2009
====================================================

* Backup files now get the same date as the original file.
* Backup Files and Keep File Date option now work with Unicode filenames.

What's New in PowerPointPipe v3.1  - April 23, 2009
==================================================

* Code Module searches now include all possible modules. A VBProject protection
password can be opened using the Unprotect Password field.
* New Edit Menu with Cut/Copy/Paste/Select All
* Installer will now force a reboot if redemption.dll is in use.

What's New in PowerPointPipe v3.0.1  - November 6, 2008
======================================================
* Removed option to keep PowerPoint visible as Microsoft does not support it.

What's New in PowerPointPipe v3.0  - October 2, 2008
===================================================
* Added option to keep Microsoft PowerPoint visible while running to aid
debugging.
* Added button to import the file list from Microsoft PowerPoint's current list
of open files.
* Added ability to perform search only from command line using /GS.
* Fixed /REPORT= command line option not working.

What's New in PowerPointPipe v2.9  - October 1, 2007
===================================================
* New Highlight option when a replacement is made, to make locating changes
easy.
* New [Clear All] button below search/replace grid.
* Removed legacy behavior where contents of search/replace grid were appended
to imported search/replace lists, leading to confusing results.

What's New in PowerPointPipe v2.8  - August 8, 2007
==================================================

* Now forces a Microsoft PowerPoint restart when particular error messages are
returned.
* If errors occur during Import, you can now cancel the Import.
* Fixed bug with /G command line invocation, and with /Q.

What's New in PowerPointPipe v2.7.9  - August 1, 2007
====================================================

* Macros are now disabled to prevent them interfering with document processing.
* New warning message if backup files have not been deleted or restored at the
end of a job.
* Longer timeout while waiting for Microsoft PowerPoint to respond. Timeout
disabled while showing the 'Cancel Job' confirmation window.
* Fixed bug with Microsoft PowerPoint being terminated repeatedly.
* New translations, better form resizing, fixed detection of options changing.

What's New in PowerPointPipe v2.7.8  - June 27, 2007
===================================================

* Fixed Match Case and Match Whole Words Only settings not being retained.

What's New in PowerPointPipe v2.7.7  - June 21, 2007
===================================================

* Now integrates with Windows Explorer right click menus - 'PowerPointPipe this
file/folder'.
* Now allows a list of files to process on the command line.
* Previous settings are now saved under Documents rather than Registry.
* New installer languages.
* New Japanese and Chinese translations.

What's New in PowerPointPipe v2.7.6
===================================

* Fixed incorrect warning for hyperlink longer than 255 characters.
* Now integrates with Windows Explorer right click menus - PowerPointPipe this
file/folder.
* Now allows a list of files to process on the command line.

What's New in PowerPointPipe v2.7.5
===================================

* Now updates hyperlink Screen Tips as well when the 'Hyperlink addresses'
search location is chosen.
* Office 2007 file extension of .PPT* now supported.
* Import assumes defaults if just columns A & B present.
* Invalid Search Locations are now corrected and you have the option to
continue running the job.
* Fixed bug with hyperlinks not being updated due to TextToDisplay property not
supported on older versions of PowerPoint.
* Fixed bug with Prompt on Replace always replacing.

What's New in PowerPointPipe v2.7.4
===================================

* Now can optionally handle read-only files.
* Now warns you if you apply EasyPattern wildcards or Perl regex wildcards to
search locations that do not support them.

What's New in PowerPointPipe v2.7.3
===================================

* Fixed bug with search locations not being processed correctly.

What's New in PowerPointPipe v2.7.2
===================================

* Vista installation support.
* New Troubleshooting Guide links.

What's New in PowerPointPipe v2.7.1
===================================

* Fixed errors when searching Notes and Handout masters for hyperlinks.
* Now allows files to be drag and dropped.

What's New in PowerPointPipe v2.7
=================================

* Improved speed when making massive numbers of hyperlinks changes (e.g.
18000).
* Hyperlink changes now automatically check for equivalence between %20 and
spaces.

What's New in PowerPointPipe v2.6.2
===================================

* New status message when exporting or importing data
* Added Half Width/Full Width option for Japanese text.
* Increased search/replace speed.
* Removed Arabic options - causing problems with English versions.
* New Options Menu item to remove leading and trailing blanks from search and
replace terms.
* Status displays now resume if you cancel out of Aborting the job.

What's New in PowerPointPipe v2.6.1
===================================

* Status window now shows seconds elapsed and scans in progress to improve
feedback to user.
* Improved timeout detection.

What's New in PowerPointPipe v2.6
=================================

* Auto Recovery is now disabled to prevent it interfering with document
processing.
* New search types of EasyPattern wildcards and Perl regex wildcards. These can
be used to apply sophisticated pattern matching, replacing and reformatting
in Hyperlink addresses, Shapes, Headers, Footers, Built in/Custom properties,
Notes and Links (OLE/DDE).
* Prompt on Replace for the search locations above.
* Processing can now be paused and resumed.
* Updated Excel/CSV/Tab import and export.
* Backed-out Windows Vista installation support. Too cumbersome for users.

What's New in PowerPointPipe v2.5
=================================

* Now can search multiple locations with one search row.
* New option to process longest 'Find What' strings first - perfect for
translators.
* New option to Allow Alerts from Microsoft PowerPoint.
* Fixed bug with prompt for save not occurring when the settings have been
changed.
* Fixed bug with replace strings longer than 255 characters missing some
characters.
* Fixed bug where MS Word was restarted, not MS PowerPoint.

What's New in PowerPointPipe v2.4.5
===================================

* Fixed division by zero when 'Restart after XX documents' was zero.

What's New in PowerPointPipe v2.4.4
===================================

* Now processes files with Unicode filenames.
* List of Files now supports Unicode filenames.
* Up/Down arrows now work outside of the Grid control.

What's New in PowerPointPipe v2.4.3
===================================

* Status dialog now correctly shows Unicode search/replace strings.
* Changed install to support Windows Vista - Test files and Sample are now
stored under Application Data\DataMystic\PowerPointPipe. Default install
location is now Program Files\DataMystic\PowerPointPipe.
* Changed the 'file exists' check to work better on LANs.

What's New in PowerPointPipe v2.4.2
===================================

* New button to copy selected rows.
* Status dialog can now save a report as a Web Page, CSV or Tab data.

What's New in PowerPointPipe v2.4 B
===================================

* New option to restart Microsoft PowerPoint automatically after a given number
of documents. This helps to eliminate Microsoft PowerPoint errors.
* Now checks if Microsoft PowerPoint is not responding, and shows a helpful
message to the end user. Microsoft PowerPoint can be restarted automatically
if it is unresponsive for a given number of seconds.
* New option to specify the path to the Microsoft PowerPoint executable (.exe)
file. This is used if Microsoft PowerPoint cannot be restarted automatically
after a failure.
* New option to process a list of files pasted in.
* Now allows replacements longer than 255 characters (working around a
Microsoft PowerPoint limitation).
* Backup files can now be restored or removed at the end of the job.
* Multi-line values can now be edited in the grid.
* Up/Down arrows now work correctly in fields other than the grid.
* Error messages reworked to always show the filename first.
* Status dialog can now copy filenames without messages - very useful for
generating lists of files to reprocess.
* Import from a .XLS replace list now handles trailing spaces and the values
Yes/No/True/False/1/0 for Boolean fields.

What's New in PowerPointPipe v2.4
=================================

* Now can update the Slide Master, Notes Master, Title Master, Handout Master
etc.
* New 'File\Send To...' menu item to email settings.
* New Help panel to assist new users.
* Bug fix when started with no search/replace rows.

What's New in PowerPointPipe v2.3
=================================

* Now can update OLE and DDE links to other objects.

What's New in PowerPointPipe v2.2
=================================

* Now detects multiple copies of PowerPointPipe running - and warns against it,
as it can lead to document corruption.
* Now warns if no rows are selected when options are clicked on.
* Now shows Unicode search strings in the status dialog.

What's New in PowerPointPipe v2.1
=================================

* Now can display the clipboard contents - very useful when using '^c' to
replace search text with the current clipboard contents.
* 'Whole word only' option is now shown disabled when the search string
consists of more than one word.
* New option to update an ISO-9001 revision number field by a pre-defined
amount.
* Fixed 'Search Inside Shapes'.

What's New in PowerPointPipe v1.9
=================================

* Now can search/replace inside slide notes.
* New XML file format - makes it easier to automate PowerPointPipe and share
replace lists with WordPipe and ExcelPipe.
* Search/replace rows are now restored when the application restarts.
* Now warns against erroneous backslashes (\) instead of forward slashes (/)
when searching inside hyperlink addresses.

What's New in PowerPointPipe v1.8
=================================

* New warning message if the search/replace list filename is blank.
* New method of connecting to Microsoft PowerPoint allows it to be manually
started if required.
* New warning if no files were processed.

What's New in PowerPointPipe v1.7.1
===================================

* Now works with an independent copy of PowerPoint to avoid interfering with
other applications.

What's New in PowerPointPipe v1.7
=================================

* EXPORT and IMPORT of replacements list to any common file format (xls, csv,
txt), in Unicode format.
* New column for the row number - makes the grid easier to work with.
* Now shows the number of changes made or search terms found, both for the
entire job, for each file, and for each search or replace term.

What's New in PowerPointPipe v1.6
=================================

* Backup mode.
* Now supports drag and drop of rows.
* Now supports Up/Down/Tab/Shift+Tab in grid.

What's New in PowerPointPipe v1.5
=================================

* Now can be automated without intervention.
* Now there is only a single message is the search strings contain leading or
trailing whitespace.
* Now correctly loads Unicode data from an Excel search/replace list.
* Now correctly finds and replaces Unicode in hyperlinks, shapes, headers,
footers and document properties.
* Now handles loading a Tab or CSV search/replace list where the replacement is
blank.
* Now handles European installations of PowerPoint.

What's New in PowerPointPipe v1.4
=================================

* Now can import a list of the files to process.

What's New in PowerPointPipe v1.3
=================================

* Fixed handling of some text frame types, which caused processing to abort.

What's New in PowerPointPipe v1.2
=================================

* Fixed changing inside hyperlinks.

What's New in PowerPointPipe v1.1
=================================

* Initial release based on ExcelPipe 2.5

See http://www.datamystic.com for more details on PowerPointPipe


How can I use PowerPointPipe?

to our newsletter

File Menu
Help Menu
Actions
Files to process
Options
Restart
Go
Running PowerPointPipe
Status Form

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Just imagine - next time your organization changes its phone number, address, web site or CEO - just run PowerPointPipe across your file server or website to fix all affected documents in one hit.

See also

Features
 New features in this release


Running PowerPointPipe

to our newsletter

Up
Command Line Parameters

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

PowerPointPipe has two very important pre-requisites when running

  1. Microsoft PowerPoint is not already running (especially with open documents).
  2. No documents are opened by someone else (no sharing)

Both of these situations lead to file sharing violations. PowerPointPipe may appear to hang, and you will need to Alt-Tab to Microsoft PowerPoint to close the 'Open Read Only' dialog box.

This leads to our two recommendations when running PowerPointPipe:

  1. Please close ALL other applications. This ensures that no programs have an PowerPoint document open.

    If PowerPointPipe says that Microsoft PowerPoint is still running, you may have to press Ctrl+Alt+Del to access the Task Manager and kill of all instances of POWERPNT.EXE manually.
  2. If you are running PowerPointPipe across a network, file share or remote machine of any description, you MUST ensure that PowerPointPipe has exclusive access to those files, either through running PowerPointPipe after hours if you are guaranteed to have exclusive access, or by denying all users access to the files while PowerPointPipe is being run.

Speed and Performance

To get the fastest speed out of PowerPointPipe

  • Ensure you disable virus scanning so that Microsoft PowerPoint will open documents faster
  • Close all other running applications
  • If possible, run PowerPointPipe directly on your File Server (Server Edition required, and local install of MS Office)
  • Increase the process priority of POWERPNT.EXE in task manager.

See also

Running PowerPointPipe from the command line.


Connecting to a SharePoint Server

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Connecting to a SharePoint Server

PowerPointPipe can connect to SharePoint in a number of ways:

  • A SharePoint server link e.g. http://...
  • A UNC path e.g. \\sharepoint server\share\*.*
  • A drive mapping, e.g. map K: to \\sharepoint server\share; in PowerPointPipe you can then specify K:\*.*


Installation

to our newsletter

System requirements
Unattended install
Distribution Files

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

PowerPointPipe is simple to install - just double-click powerpointpipe.exe that you downloaded.

Note: You must have Microsoft PowerPoint installed on your system.

The installation program creates uninstall entries under Control Panel:Add/Remove Programs. These allow PowerPointPipe to be cleanly removed from your system.

Uninstall

Uninstallation is completely automatic.

To uninstall PowerPointPipe, click the Start Menu, Settings, Control Panel, Add/Remove Programs. Select PowerPointPipe from the list presented, and click Add/Remove. PowerPointPipe will then be deleted.

The uninstall does not remove files modified or added by you, so any changes you have made to files will NOT be lost.


Online Web Purchase

to our newsletter

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

The commercial version of PowerPointPipe can be purchased and received immediately on the Internet, eliminating shipping and handling costs. The latest price list can be downloaded from http://www.datamystic.com/order.txt

Direct Purchase URL: http://www.datamystic.com/buy.html

See also

Purchase Information
 Order Form
License Information


DATAMYSTIC ORDER FORM
Prices current as at January 24, 2014

All our products come with (unless stated below)
* One Year of FREE upgrades
* 30 days FREE Phone support
* Bonus additional software
* Unlimited Access to Technical Support web site and product FAQs
* Unlimited Access to Discussion Forums.

Note: For upgrades, please login to the secure area for upgrade quotes and pro-forma invoices.
INTERNET ORDERS
Please go to

    http://www.datamystic.com/buy

to pay by credit card using the Internet.
UPGRADES
One year of FREE upgrades is included with each product. The upgrade price varies for each product – please see our website for upgrade price details:

    http://www.datamystic.com/buy
PHONE  ORDERS
You can order by credit card over the phone if you do not have Internet access.

       USA Office: +1 952 646-5022
       USA and Canadian customers: call +1 800 406 4966
       German Office: +49 221 31088-30

Please have the Product Id (see the Product list below) and your credit card ready.
FAX/MAIL ORDERS
You can order by fax or postal mail if you do not have Internet access. Please use the order form below for:

* Purchase orders (commercial, government, educational etc)
* Fax orders
* Postal mail orders
* Cash payments
* Check payments
* All other non-internet orders

1. Please download the latest version (*) of this form from

    http://www.datamystic.com/order.pdf

    (*) Prices may not be honored if you do not use the latest version

2. Print out and complete this form

3. Fax or mail it to:

USA Office	German Office

ShareIt! Inc.	ShareIt!
9625 W 76th St	element 5 AG
Eden Prairie	Vogelsanger Str. 78
MN 55344	50823 Köln/Cologne
U.S.A.	Germany

Tel. +1 952 646-5022 or +1 800 406 4966	Tel: +49-221-31088-30
Fax. +1 952 646-4552	Fax: +49-221-31088-29
CUSTOMER DETAILS

 First Name: _________________________________________________

  Last Name: _________________________________________________

     E-mail: _________________________________________________

     ** Please do not forget to include your e-mail address **
        *** We will use e-mail to communicate with you. ***

    Company: _________________________________________________

    Address: _________________________________________________

             _________________________________________________

             _________________________________________________

             City: ___________________________________________

             State: __________________________________________

             Postal code: ____________________________________

             Country: ________________________________________

      Phone: _________________________________________________

        Fax: _________________________________________________

PAYMENT
How would you like to pay the registration fee? (Please tick one)

       [   ] Credit card (please fill out the details below)
       [   ] Wire transfer
       [   ] EuroCheque
       [   ] Cash
       [   ] US Check drawn on a US bank
       -- for Australian customers only – GST will be charged --
       [   ] Australian dollar cheque
       [   ] EFT

Credit card information (if applicable)
       [   ] Visa
       [   ] Eurocard/Mastercard
       [   ] American Express
       [   ] Diners Club
          [   ] Other: _________________________

Card Holder: ______________________________________________

Card Number: ____________________________ Expiry Date (mm/yyyy): ___/_____

Date / Signature: _________________________________________

PRODUCTS
Please note: All prices are in USD. If you wish to order in Euros or another currency, please indicate this when you order and will perform the appropriate conversion.

Please see our web site for pricing bundles, volume licensing and other licensing options:
  http://www.datamystic.com/buy

SKU
DESCRIPTION AND PRICE
TextPipe Pro (fix text fast in web sites, database extracts and e-text of unlimited size!)

Note: More features than Standard version. Please ensure you are evaluating the Pro version before ordering
131686
131822
136051
136050
136049
  1  Single User Licenses    @   $395: $______
__ x Server License          @   $699: $______
__ x Site License/200 User   @  $4990: $______
__ x Edu Site/200 User       @  $3990: $______
__ x Enterprise License      @  $7990: $______
TextPipe Standard

Note: Less features than Pro version. Please ensure you are evaluating the Standard version before ordering
137374
__ x Single User License     @   $199: $______
TextPipe Lite

Note: Less features than Standard and Pro versions. Please ensure you are evaluating the Lite version before ordering
157097
__ x Single User License     @  $49.95: $______
TextPipe Pro Run Time

Note: (the run time, read-only version of TextPipe Pro – filters CANNOT be modified by clients)
147437

__ x Single User License     @   $199: $______
ResumePipe Unlimited Resume Model
137750
__ x Single User License     @   $499: $______
DataPipe (interactive search and replace in databases)
138135
__ x Single User License     @   $495: $_____
WordPipe Unlimited Document Model
138134
138332
300041894
__ x Single User License     @    $499: $______
__ x Lite Single User        @     $99: $______
__ x Floating License        @     $1299: $______
ExcelPipe Unlimited Spreadsheets Model
186919
186921
__ x Single User Licenses    @   $499: $______
__ x Lite Single User        @ $49.99: $______
PowerPointPipe Unlimited Presentations Model
220500
300071460
__ x Single User Licenses    @   $499: $______
__ x Lite Single User        @ $49.99: $______
TextPipe Engine Programmers DLL
132910

__ x per Application it is used in
     Royalty Free            @   $500: $______
AbusePipe spam complaint analyzer
188875
__ x Single User License     @   $595: $______
KeyboardLocker
205713
__ x Single User Licenses    @ $9.99: $______
EasyPattern Engine Programmers DLL
211244

__ x per Application it is used in
     Royalty Free            @   $199: $______
HookKeys Programmers DLL
TBA
__ x per Application it is used in
                             @   EMAIL: $______
DetachPipe (save, detach and delete email attachments)
146668
138333
__ x Single User Licenses    @ $29.95: $______
__ x Lite License            @ $19.95: $______
EmailPipe (converts emails to text files)
198245
__ x Single User License     @   $399: $______
Time Zone Helper (show international working time overlap)
162196
__ x Single User License     @ $19.95: $______
DirSize disk space monitor
132558
140086
140426
1-4  Single User Licenses    @    $40: $______
__ x Server License          @   $349: $______
__ x Site License            @  EMAIL: $______
DirDate
132564
1-4  Single User Licenses    @    $20: $______
Arc Menu (formerly Launch)
132561
157148
1-4  Single User Licenses    @    $20: $______
__ x Enterprise License      @  EMAIL: $______
ZeroIn
100503
1-4  Single User Licenses    @    $20: $_____

Coupon Code (if any): _____________

Optional Extras
SKU
DESCRIPTION AND PRICE
190386
179661
216285
__ x Premium Support Hours    @   $100/hr: $______
__ x Backup CD        @ $19.99: $______
__ x 2 Years Extended Download Service @ 9.99 per order: $_______

                                     ===================
                                     Total: USD
                                     ===================

Order Form - January 24, 2014	www.DataMystic.com 	Page 1


Purchase Information

to our newsletter

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

PowerPointPipe is developed as a commercial product, and you may evaluate it for a period of 30 days. You must purchase PowerPointPipe if you use it beyond the evaluation period or if you use any of the output that it generates during the evaluation period. Use of PowerPointPipe after the evaluation period is illegal and violates international copyright laws.

Benefits of Purchasing PowerPointPipe

By purchasing PowerPointPipe you will obtain the following benefits:

  • the latest version of PowerPointPipe
  • access to technical support
  • access to upgrades and bug fixes
  • preferential upgrade pricing
  • notification of future updates
  • you will not be breaking the law
  • you will have a clear conscience
  • you will ensure continued development of this product, making PowerPointPipe an even better product in the future

Purchasing

There are two ways to purchase PowerPointPipe:

  • The easiest, quickest and most convenient way is to visit the PowerPointPipe home page on the Internet at http://www.datamystic.com and use the online purchase facility. This facility is for credit card payment only.
  • Mail or email the order form to DataMystic. The mailing address is contained in the form. The order form is contained in the help file and in ORDER.TXT

See also

Online Web Purchase
Order Form
 License Information


Other documentation

to our newsletter

Consulting Services
Contact Information
Corporate Modifications
Other DataMystic Products
Vendor Information

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Contact Information
 Other DataMystic Products
 Shareware Vendor Information
 Distribution Files
 License Information
 Corporate Modifications


Contact Us

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

For technical support, please see the support page.

For sales, please contact our sales department directly:

Envelope sales2@datamystic.com

For all other enquiries, please write to our general address:

support2@datamystic.com

Phone/Fax

Phone - phonen1.gif (1029 bytes) +61-3 9913-0595 (9am-5pm Australian Eastern Standard Time - please see below). Within Australia please call (03) 9913-0595

Time Zones (GMT+10)

Here you can check if you are calling us in Australian business hours (9am - 5pm Monday to Friday)

Mail

DataMystic
5 Bond St
Mt Waverley
Victoria 3149
AUSTRALIA

Feedback and Comments

We're always open to feedback and comments! Please use our suggestion box to let us know if there is a feature you would like to see in future versions. We also welcome any reports of bugs or incompatibilities, inconsistencies, spelling mistakes, grammatical errors, broken links etc.

Contact Us Support Community (online) FAQ, Tutorials and User Guides (online) Copyright © 1999-2020 DataMystic. All rights reserved.


Other DataMystic Products

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

DataMystic develops system utilities for power users, administrators and programmers. It has developed 14 software titles since 1990:

More information about TextPipe TextPipe | Automated search and replace and text processing tool
More information about DetachPipe DetachPipe | Save, detach and delete email attachments from Outlook, Lotus Notes, Applix or MAPI-compliant email systems
More information about WordPipe WordPipe | Perform multiple search/replaces in multiple Microsoft-Word documents
More information about ExcelPipe ExcelPipe | Perform multiple search/replaces in multiple Microsoft-Excel spreadsheets
More information about PowerPointPipe PowerPointPipe | Perform multiple search/replaces in multiple Microsoft-PowerPoint presentations
More information about DataPipe DataPipe | Uses TextPipe Pro to modify database records live in your databases
More information about File Watcher File Watcher | Triggers an action when new files arrive in a folder
More information about Time Zone Helper Time Zone Helper | Displays the working time overlap for people in different time zones
More information about AbusePipe AbusePipe | Detect IP address of Spam offenders from email complaints
More information about EmailPipe EmailPipe | Convert emails to numbered text files
More information about DirSize DirSize | Windows 95 command line utility to accurately show used and wasted disk space, sorted by total size, depth, wastage etc
More information about ResumePipe ResumePipe | Extract emails and their attachments from Outlook, Lotus Notes, Applix or MAPI-compliant email systems to sequentially numbered files, and post-process using TextPipe Pro
More information about ZeroIn ZeroIn | Fast CD replacement with spelling correction, history, aliases and long filename support
More information about Arc Arc Menu | Text-based, mouse-driven windowed menu system with many advanced capabilities
More information about DirDate DirDate | Unique ability to change the date on folders
More information about BabyShield BabyShield | Temporarily disables the mouse AND keyboard while your pet or child taps on the keyboard
More information about ClipSize ClipSize | Displays memory occupied by the clipboard and allows it to be cleared easily
More information about Clean 'n' Go Clean 'n' Go | Temporarily disables the mouse, keyboard or screen while they are cleaned.
More information about LFNit! LFNit! | Restores Windows 95 long filenames. Designed to allow continued use of old 16 bit applications (eg XTree, tape backup software, LapLink, PkZip etc) without losing long filenames

Contact Information


Vendor Information

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

If you are a

  • Shareware distributor
  • Disk vendor
  • Web site
  • CDROM publisher
  • Magazine
  • or any other organization or person

you may distribute the Evaluation Editions (*) of all DataMystic programs provided the following conditions are met:

  1. You must inform the buyer that they are paying for your service, not for the programs, and that the programs must be purchased if they wish to continue using them after the evaluation period.
  2. You must include all original files included with the program, and you must not modify these files in any way. If required, you may add new files of your own.
  3. You must let us know by email if you include our software in your collection. We can then keep you informed of the latest version.

(*) All programs use the Help\About dialog or the -? Command line parameter to identify that they are an Evaluation Edition.

Contact Information

Contact Us Support Community (online) FAQ, Tutorials and User Guides (online)


Distribution Files

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

The PowerPointPipe archive consists of the following files:

POWERPOINTPIPE.EXE | The PowerPointPipe program
*.PPP | Useful PowerPointPipe settings for common tasks
ORDER.TXT | Order form
README.TXT | Readme file
PowerPointPipe.CHM | Help file for 32-bit version
VENDOR.TXT | Vendor information
CORPORAT.TXT | Information about Corporate versions
LICENSE.TXT | User license information
PRODUCTS.TXT | Information about other DataMystic products
WHATSNEW.TXT | What's new in this version of PowerPointPipe

If any of these files are missing from your copy of PowerPointPipe then you can obtain a complete version from the DataMystic Home Page on the Internet.


This program and the accompanying files and documentation are

Copyright (c) 1990- 2024 DataMystic Pty Ltd
All rights reserved

This file contains our end user license.  It also explains the terms of the Commercial License where they're different from the Evaluation
License.

Plain English License Agreement and Limited Warranty

1. SUMMARY.  You may install this SOFTWARE on as many computers as your license allows, and no more:

You may access the software through a network, provided that you have obtained individual licenses covering all computers that
will run the software from the network. For instance, if six different workstations will access the software on the network, you will
need a six-user license, whether they use the software at different times or concurrently.

* Lite License/Home License/Personal Edition
May be used by one person in a home environment. CANNOT be used in government, business or any organization. If you have
both a Desktop and Laptop computer, you may install ONE (1) copy on each computer provided there is no chance of both being
used at the same time.

* Single User License/Desktop Edition/Single User Pack/Subscription
May either be used by a single person who uses the software himself on one or more non-server class computers, or installed on a
single non-server class computer and used by multiple people, but not both. If you have both a Desktop and Laptop computer, you
may install ONE (1) copy on each computer provided there is no chance of both being used at the same time. CANNOT be used
under Windows Terminal Services /  Remote Desktop Connection unless locked down to one user only.

* Portable License
A portable license does not get 'installed' � it is intended to be stored on a USB key and used by one person only as they move
from computer to computer. It may ONLY be run from a single USB key, and not installed or a copy left on any computer.

* Floating License
A floating license can be shared between multiple users. CAN be used under Windows Terminal Services /  Remote Desktop
Connection.

* Server License
May be installed on ONE (1) server class computer ONLY. If you have both Production and Development servers, you may install
ONE (1) copy one each server. CANNOT be used with Windows Terminal Services / Remote Desktop Connection.

* SharePoint Server License
May be installed on ONE (1) SharePoint Server ONLY, or used on a Workstation to connect to a SharePoint Server. If you have
both Production and Development servers, you may install ONE (1) copy one each server. CANNOT be used with Windows
Terminal Services / Remote Desktop Connection.

* Site License/Educational Site License
May be installed on UP TO 200 computers of server class or non-server class at one site ONLY

* Enterprise License/Company Edition/University Edition
May be installed on UP TO 2000 computers of server class or non-server class  directly owned by a Company or University ONLY
(but not on client's computers)

This is a legal agreement between you and DATAMYSTIC.  By using the SOFTWARE you are agreeing to be bound by the terms of this
Agreement.  Do not use the SOFTWARE if you do not agree to the terms of this Agreement.

2. DEFINITIONS.  In this agreement:

* "SOFTWARE" means the computer program you have purchased or obtained for evaluation, including the program, associated
documentation and other materials;

* "Evaluation Copy" means a copy of the SOFTWARE distributed by us or by our authorised agents for evaluation purposes and
which is described as an "Evaluation Edition" or a "Shareware Edition" by the SOFTWARE's "About" screen;

* �Evaluation Period� means a period of time during which the product may be evaluated. The time remaining is indicated by the
product�s main screen.

* "Commercial Copy" means a copy of the SOFTWARE purchased from us or from a dealer, and is NOT described as an
Evaluation Copy by the SOFTWARE's "About" screen.  The actual description may include "Desktop Edition", "Single User Edition",
"Personal Edition", "Server Edition", "Site Edition" or "Company Edition" or other variations depending on the version purchased;

* "you" means the end user of the SOFTWARE.  This can be either an individual or an entity;

* "server class" means a computer designated as a file server, database server, "desktop class" or "non-server class" means a
computer where only one person uses it at a time;

* "DATAMYSTIC" means DataMystic, an Australian corporation (address shown above).

3. GRANT OF LICENSE.  DATAMYSTIC grants you the right to INSTALL this SOFTWARE on as many computers as you have purchased a
license for.  You may NOT install it on computers that you do not have a license for.

If a computer is replaced you may transfer the software to the new computer, provided that you do not breach the number of licenses you
have purchased. You may not repeatedly uninstall and then reinstall on another computer to avoid purchasing more licenses.

The SOFTWARE is "installed" on the computer when it is loaded into permanent memory (e.g. hard disk, CD-ROM, or other storage device)
of the computer.

4. COPYRIGHT.  The SOFTWARE is owned by DATAMYSTIC and is protected by copyright laws and international treaty provisions and all
other applicable national laws.  Therefore, you must treat the SOFTWARE like any other copyrighted material (e.g. a book or musical
recording) except that you may make one copy of the SOFTWARE solely for backup or archival purposes.  You may not copy the user
documentation provided with the SOFTWARE.

5. OTHER RESTRICTIONS.  You may not rent, lease, sell, or attempt to rent, lease or sell the SOFTWARE. You may transfer the
SOFTWARE and accompanying written materials on a permanent basis provided you retain no copies and the recipient agrees to the terms
of this Agreement.

You must not copy, translate, adapt, modify, alter, decompile, disassemble, or otherwise reverse engineer or create any derivative work of the
SOFTWARE, merge the SOFTWARE or any part thereof with any other software or change any SOFTWARE in whole or in part, nor allow
any other party to do so.  You must not alter or remove any copyright or other intellectual property notifications applied to the SOFTWARE.

You acknowledge that the SOFTWARE and the copyright, and other intellectual property rights of whatever nature in the SOFTWARE are not
your property and contain valuable proprietary information and trade secrets and that this license confers no title or ownership in the
SOFTWARE and no rights in any associated source code, and is not a sale of any rights in the SOFTWARE.

6. EVALUATION PERIOD.  You may use an Evaluation Copy of the SOFTWARE for up to the Evaluation Period in order to determine
whether it meets your needs.  While you are evaluating the SOFTWARE, you may use it on as many computers as are required to perform
your evaluation.  Your evaluation period begins when you first install the SOFTWARE on one or more computers for evaluation purposes.
Once the evaluation period is over you MUST PURCHASE THE SOFTWARE or REMOVE IT FROM ALL COMPUTERS. If you use the
SOFTWARE for non-evaluation purposes DURING your evaluation you MUST PURCHASE THE SOFTWARE.

7. MAKING AND DISTRIBUTING EVALUATION COPIES OF THE SOFTWARE.  You may make copies of your Evaluation Copy of the
SOFTWARE to give to others, as long as you include all of the files that you originally received with your Evaluation Copy.  When you give an
Evaluation Copy of the SOFTWARE to another person, you agree to inform them that their copy is to be used for a time-limited evaluation
period, and that they must purchase a Commercial Copy if they continue to use the SOFTWARE once the evaluation period has ended.  You
agree not to sell Evaluation Copies of the SOFTWARE or distribute them to others for any kind of compensation or fee unless the fee solely
covers your costs in providing it to the end user.

8. OPERATION OF THE SOFTWARE.  The SOFTWARE offers powerful capabilities.  If you do not follow our instructions, or if you use the
SOFTWARE improperly, you can destroy files or cause other damage to your software and data.  You assume full responsibility for the
selection and use of the SOFTWARE to achieve your intended results.

9. LIMITED WARRANTY.  The following limited warranty applies to Commercial Copies of the SOFTWARE.  DATAMYSTIC warrants that for
a period of ninety (90) days from the date of receipt of the SOFTWARE that (i) the SOFTWARE will perform in substantial conformance with
the related documentation supplied with the SOFTWARE; and (ii) the media on which the SOFTWARE is distributed is free from defects in
materials and workmanship.  If the SOFTWARE does not conform to these limited warranties DATAMYSTIC will, at its option, either refund
the amount you paid for the SOFTWARE or provide you with the corrected item at no charge provided that the defective item is returned to
DATAMYSTIC within ninety (90) days from the date of your receipt of the SOFTWARE.  Any replacement SOFTWARE will be warranted for
the remainder of the original ninety (90) day warranty period or thirty (30) days from the date you receive the replacement, whichever is
longer.  Any misuse, accident or unauthorized modification of the SOFTWARE will void these limited warranties.  This warranty does NOT
apply to Evaluation Copies of the SOFTWARE.

We warrant that the SOFTWARE shall not infringe upon any copyright, patent, trade secret, or other intellectual property or proprietary right,
or misappropriate any trade secret of any third party.

10. INDEMNITY. DATAMYSTIC shall defend, at its expense, and pay the cost and damages incurred or awarded as a result of any action
brought against you based on an allegation that the SOFTWARE infringes any third party Intellectual Property Rights provided: you promptly
notify DATAMYSTIC in writing of any such action or allegation of infringement; DATAMYSTIC has complete control of the defense of any
such action and all negotiations for its settlement or compromise; , however, no such claim or action shall be settled or compromised without
your express written consent; and, you at no time admit liability or otherwise settle or compromise or attempt to settle or compromise the
claim or action except under the express instructions of DATAMYSTIC.

In addition to DATAMYSTIC�s obligations under the above paragraph, if, in DATAMYSTIC�S opinion, the SOFTWARE is likely to become the
subject of a claim of any infringement, DATAMYSTIC shall, at its sole option and expense: (a) procure for you the right to continue using the
SOFTWARE; (b) replace or modify the SOFTWARE so that it becomes non-infringing; or, at DATAMYSTIC�S sole discretion, if (a) and (b) are
not feasible, DATAMYSTIC shall accept the return of such infringing SOFTWARE and reimburse you for the purchase price of such infringing
SOFTWARE.

11. DISCLAIMERS AND LIMITATIONS.  And now the legal language we couldn't avoid:

DISCLAIMER FOR EVALUATION COPIES: YOU ARE NOT PAYING FOR THE TRIAL USE LICENSE FOR YOUR EVALUATION COPY OF
THE SOFTWARE.  ACCORDINGLY THE EVALUATION COPY IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND.

DISCLAIMER FOR COMMERCIAL COPIES: Except for the limited warranty stated above, we disclaim any and all other warranties, express
or implied, oral or written, including any implied warranties of merchantability or fitness for a particular purpose.  The limited warranty above
gives you specific legal rights, but you may have other rights, depending on where you purchased the SOFTWARE.

LIMITATION OF LIABILITY.  IN NO EVENT SHALL EITHER PARTY BE LIABLE FOR ANY INCIDENTAL, CONSEQUENTIAL, OR PUNITIVE
DAMAGES WHATSOEVER ARISING OUT OF USE OF THE SOFTWARE OR ONE PARTY�S RELATIONSHIP WITH THE OTHER PARTY.
SOME COUNTRIES OR STATES DO NOT ALLOW EXCLUSION OR LIMITATION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
DAMAGES, THEREFORE THE ABOVE LIMITATION MAY NOT APPLY TO YOU.

12. This agreement is a perpetual agreement. The effective date commences on your first use of either the Evaluation or Commercial
SOFTWARE. The agreement terminates when all Evaluation and Commercial SOFTWARE copies are removed from all of your systems.

13. This agreement is to be interpreted under the laws of the state of Victoria, Australia.

END OF LICENSE AGREEMENT

DataMystic Pty Ltd EULA	www.datamystic.com 	Page 1 of 1


Corporate Modifications

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Corporate and business users are welcome to approach DataMystic for modifications specific to their needs. We can easily incorporate any changes you desire. Please send us specifications and we will send you a quote. Please also include details such as a contact name, phone and/or address, plus any other details you think are relevant.

Contact Information


File Menu

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Open

Opens settings from a saved PowerPointPipe settings file (.PPP). You can double-click .PPP files in Windows Explorer to open PowerPointPipe with them.

Note - this is NOT used to open Microsoft PowerPoint files. PowerPointPipe is designed to process hundreds or thousands of PowerPoint files, so it doesn't make sense to open them individually.

To specify which files to process, use the Files To Process tab.

Save

Saves the current settings to a PowerPointPipe settings file.

Save As

Saves the current settings to a PowerPointPipe settings file with a new name.

Recent Files

Contains a list of your most recently opened files.

Exit

Closes PowerPointPipe.


Import/Export Format

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Import Search/Replace List

Imports a list of search/replace pairs from Excel (.XLS files), Comma Separated Value (.CSV files) or Tab-delimited (.TAB files) formats. Note: Loading large lists from Excel is very slow - export your list to .CSV or .TAB and then import that instead.

You can import Unicode or special character replacements from Excel using this item. Note that some special characters may not display correctly - but the replacement will still occur correctly. The special characters are usually shown as question marks or hollow rectangles.

Columns required by the Import process (You can find sample import files in the Documents\DataMystic\PowerPointPipe\Samples folder (in .tab, .csv and .xls format)):

A | B | C | D | E | F | G | H
Find what | Replace with | Search Type | Search Location | Match Case | Whole word | Match Byte | Prompt
The text to find. | The text to replace it with. | 0 - Normal search (default) 1 - EasyPattern 2 - Perl regex. | * See Search Location below | TRUE to match case FALSE (default) to find both upper and lower case. | TRUE to match Whole Words Only FALSE (default) to match anywhere inside a word. | TRUE - Unicode (double-byte) characters match only Unicode (double-byte) characters FALSE (default) - Unicode (double-byte) characters match their ANSI (single-byte) equivalents. | TRUE to prompt on replace FALSE (default) to not prompt on replace.
e.g.
تنانتانتا نتانتاهعغهع | יעיעלחילחילח | 0 | 3 | FALSE | FALSE | FALSE | FALSE

Search Location Column

This column indicates one or more locations to search. Specify it by ADDING the numbers next to the search locations from the list below - DO NOT ADD A NUMBER MORE THAN ONCE.

1 - Slides - look in each slide (default)
2 - Hyperlink addresses - look inside hyperlink addresses. To change the displayed text, use the 'Cells' option above as well
4 - Shapes - inside the text of shapes and grouped shapes
8 - Headers - search inside the left, centre and right header of each sheet
16 - Footers - search inside the left, centre and right footer of each sheet
32 - Built in properties - inside Subject, Title, Author etc fields
64 - Custom properties - inside custom properties defined by the user
128 - Notes - search/replace inside slide notes
256 - Links (OLE/DDE) - search/replace inside the filenames of links to other objects
512 - Slide Master - inside the text, hyperlinks, shapes, header, footer, notes and links of each slide's master (which can be different to the presentation master)
1024 - Master Slide - inside the text, hyperlinks, shapes, header, footer, notes and links of the presentation Master Slide
2048 - Title Master - inside the text, hyperlinks, shapes, header, footer, notes and links of the Title Master
4096 - Handout Master - inside the text, hyperlinks, shapes, header, footer, notes and links of the Handout Master
8192 - Notes Master - inside the text, hyperlinks, shapes, header, footer, notes and links of the Notes Master

e.g. to search inside Slides, Hyperlinks and Shapes, add 1+2+4 giving a column value of 7. To search inside Hyperlinks in Headers, add 2+8 giving a column value of 10.

Export Search/Replace List

This option exports all of the search/replace terms in the grid to a new file, in Excel (.XLS files), Comma Separated Value (.CSV files) or Tab-delimited (.TAB files) formats.

This is useful if you've modified the search/replace pairs or search options and need to export them back to a file. It's also very handy for prototyping the information required to generate an Import file (see the option above).


Help Menu

to our newsletter

Up
Check for updates

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Contents

Displays the contents page of the PowerPointPipe online help.

Index

Displays the index page of the PowerPointPipe online help.

Show Tip of the Day

Shows or hides the Tip of the Day panel.

Buy PowerPointPipe Now

Opens your web browser at http://www.datamystic.com/buy.html to purchase PowerPointPipe.

Order form

Opens a text-based order form to order PowerPointPipe.

PowerPointPipe Home Page

Opens your web browser at http://www.datamystic.com/powerpointpipe.html

DataMystic Home Page

Opens your web browser at http://www.datamystic.com

Check web for PowerPointPipe updates

Uses the internet to find out if a new version of PowerPointPipe is available. If so, you can choose to go to the DataMystic web site to download the update.

Technical support

Opens your web browser at http://www.datamystic.com/support.html

About

Displays PowerPointPipe's About window.


Files to process

to our newsletter

Up
Connecting to a SharePoint Server

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Include subfolders

When checked, the Include Subfolders box tells PowerPointPipe to search all subfolders of the Start folder for presentations to process. Clear this check box if you don't want to search subfolders of the Start folder.

When the file list is used, PowerPointPipe will scan all subfolders for matching files.

The include subfolders box applies to all the types of file search.

Scan for files

Note: You can drag and drop files or folders to process directly from Windows Explorer to PowerPointPipe and they will be added to the List of Files. If you drag and drop a settings file (.PPP) the new settings will be loaded.

Start folder

The start folder is where PowerPointPipe starts searching for presentations to process. You can browse to a new folder by clicking on the [Browse] button on the right hand side. To open the folder, double click the field.

To make changes to a SharePoint site, use the [Select SharePoint URL] button.

File types

The type of presentations to find. You can separate multiple types with a semi-colon, e.g. *.ppt*;*.sld*;*.odp

Start date

You can specify an optional start date/time, so that only files modified after this date will be examined.

End date

You can specify an optional end date/time, so that only files modified before this date will be examined.

Note: For Word documents (*.doc etc), use our WordPipe application. Note: For Excel documents (*.xls etc), use our ExcelPipe application. For Text documents (txt, html, xml, csv, tab, prn etc), use our TextPipe Pro application, for far greater speed.

Get filenames from a text file

Use this facility to load a list of files from a text file. Filenames should be one per line, and filespecs like c:\*.ppt;*.txt can be used.

List of files

You can paste a list of filenames (and wildcards) directly into the multi-line edit box.

If your previous run had files with errors, you can copy the list of filenames from the Errors tab and paste the files into this box for reprocessing.

Import currently open files from Microsoft PowerPoint

If you are working on files inside Microsoft PowerPoint, you can easily transfer them to PowerPointPipe with this button.

Add SharePoint URL

Click this button to add a URL pointing to a SharePoint site. If there is a SharePoint URL on the clipboard when you click this button, WordPipe will automatically try and browse to it.


Actions

to our newsletter

Up
Special characters
Whitespace warning
EasyPattern Primer
EasyPatterns Reference
Pattern Matching Reference
Access to code modules disallowed
Import/Export Format

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

This tab determines the text to be searched for, or search/replaced.

Using these values

Uses the search/replace pairs specified in the grid. Click the [Add] button to add a new row to the end of the grid. To delete rows, first select them and then click [Delete]. To edit a row, click it, and then press [F2], or click the cell a second time. You can [Tab] and [Shift-Tab] through the grid. You can change the search settings for multiple rows simultaneously by first selecting them and then changing the search settings below. You can move rows using drag and drop.

Find what

Type the information you want to search for or paste it from the Clipboard. The Find text is limited by Microsoft PowerPoint to be a maximum length of 255 characters. You can right click this field for a popup menu with Cut, Copy, Paste and Clear commands.

Note: You can only search for one line of text at a time. If you wish to use multiple lines, or search using wildcards, see the special characters section.

Searching for multiple lines

Although the edit field can hold multiple lines of text, Microsoft PowerPoint does NOT allow you to search for multiple lines at once (and PowerPointPipe cannot get around this limitation). The best way to search for multiple lines is to break them up into several line-by-line or phrase-by-phrase searches.

Replace with

Type the text that you want to use as replacement text or paste if from the Clipboard. Leave the Replace With box empty to delete the Find What box from your document. You can right click this field for a popup menu with Cut, Copy, Paste and Clear commands.

The Replace With text can include Macros.

Search Type

Normal search

Matches the text exactly as written.

EasyPattern wildcards

Important Note: This search type ONLY applies to the search locations Hyperlink addresses, Shapes, Headers, Footers, Built in/Custom properties, Notes and Links (OLE/DDE). If you attempt to use it in Slides, Slide Master etc it will result in a normal search. For wildcard searches in Slides, and the Slide Masters, use Microsoft PowerPoint's inbuilt wildcards, with the Search Type set to 'Normal search'.

An EasyPattern allows you to search for a class of text strings rather than specifying every single possibility. For example, to search for a dollar sign followed by a currency amount:

$[ capture(1+ digits, period, 2 digits) ]

Replace With:

USD $1

Click here for the EasyPattern basics and reference.

EasyPatterns are easier to learn and use than perl regex patterns, but to use them in other packages you need to use EasyPattern Helper to convert them to perl regex.

Perl regex wildcards

Important Note: This search type ONLY applies to the search locations Hyperlink addresses, Shapes, Headers, Footers, Built in/Custom properties, Notes and Links (OLE/DDE). If you attempt to use it in Slides, Slide Master etc it will result in a normal search. For wildcard searches in Slides, and the Slide Masters, use Microsoft PowerPoint's inbuilt wildcards, with the Search Type set to 'Normal search'.

A perl regex pattern allows you to search for a class of text strings rather than specifying every single possibility. For example, to search for a dollar sign followed by a currency amount:

\$(\d+\.\d{2})

Replace With:

USD $1

Click here for the Perl regex reference.

Perl regex patterns are harder to learn and use than EasyPatterns, but they are support by a huge range of applications.

Look In (Search Location)

Where to search or search/replace.

Items with (*) support the use of EasyPatterns and Perl regex patterns.

  • Slides - look in each slide
  • Hyperlink addresses (*) - look inside hyperlink addresses. To change the displayed text, use the 'Cells' option above as well
  • Shapes/Shapes and Text boxes (*) - inside the text of shapes and grouped shapes and text boxes
  • Headers (*) - search inside the left, centre and right header of each sheet
  • Footers (*) - search inside the left, centre and right footer of each sheet
  • Built in properties (*) - inside Subject, Title, Author etc fields
  • Custom properties (*) - inside custom properties defined by the user
  • Notes (*) - search/replace inside slide notes
  • Links (OLE/DDE) (*) - search/replace inside the filenames of links to other objects
  • Slide Master - inside the text, hyperlinks, shapes, header, footer, notes and links of each slide's master (which can be different to the presentation master)
  • Master Slide - inside the text, hyperlinks, shapes, header, footer, notes and links of the presentation Master Slide
  • Title Master - inside the text, hyperlinks, shapes, header, footer, notes and links of the Title Master
  • Handout Master - inside the text, hyperlinks, shapes, header, footer, notes and links of the Handout Master
  • Notes Master - inside the text, hyperlinks, shapes, header, footer, notes and links of the Notes Master
  • Code Modules (*) - search and replace code modules. If the modules are password-protected, enter this password on the Options tab, Password to Unprotect field. See code modules security.

Special codes to use in the Search Location field.

Hyperlink addresses

If you want to change the displayed text (not the hyperlink itself), please use a Slides Search instead of, or in addition to this option. This option can be used to search and replace hyperlinks to update server names, UNC paths etc. We recommend that the Match Case option be unchecked, so that both upper case and lower case data can be found. You can use any search type, including EasyPatterns and Perl regex patterns.

If the hyperlink address and display text are identical they will be updated simultaneously. PowerPointPipe treats the two representations of space (' ' and '%20') as equivalent, however other escaped characters (in %XX form) need to be handle manually.

Note also that sometimes the display text of a hyperlink is completely different to the actual link. To be sure that what you are replacing is correct, right click on the hyperlink in PowerPoint and choose 'Edit Hyperlink'. You may have to perform one search for the display text and another search for the hyperlink text.

Searching in Built In and Custom Properties

By default a search/replace will search ALL properties.

To specify a particular property, prefix the search string with the property name in square brackets [ .. ] e.g

[Author]Simon

replaces the word 'Simon' only in the [Author] field.

Match case

Distinguishes between UPPERCASE and lowercase letters. When Match Case is selected, PowerPointPipe finds only those instances in which the capitalization matches the text you typed in the Find What box.

Match whole words only

Ensures the match is not part of a larger word e.g. a search for 'mat' would not be found in the word 'matches' when this option is checked.

Prompt

When checked, displays the found text and asks for confirmation before replacing it.

You can choose to Replace or Skip just one, the remainder in the current file, or the remainder for the whole job.

Note: Prompting is not supported for every Look In location.

Skip Prompt if Identical

If the search text is identical after replacing it, then skip showing the prompt. This can be very useful when using pattern matching which may not alter the text.

Highlight replacement

Where possible, the replaced text is highlighted to make it easier to find.

Use search/replace list

When checked, search/replace pairs are loaded from a file dynamically at run time - from Excel (.XLS files), Comma Separated Value (.CSV files) or Tab-delimited (.TAB files) formats. The current search type, search location and other options are used for every search/replace pair added. A list can also be imported using an option in the Options menu.

For the complete file format details, please click here. You can find sample import files in the Samples folder (in .tab, .csv and .xls format).

PowerPointPipe can handle an unlimited number of replacements - but Microsoft Excel is limited to 65534 rows of data. You can work around this limit by loading multiple files from the command line. Note - despite Microsoft Excel 2007 and later being able to handle 1 million rows, it is unable to provide data beyond 65535 rows to PowerPointPipe. To work around this, save your Microsoft Excel data to a .CSV or .TAB temporary file so that PowerPointPipe can import all the data.

Note: Loading large lists from Excel is very slow - export your list to .CSV or .TAB and then import that instead.


Special characters

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

The special codes in the Find What and Replace With boxes depends on which type of match is being used.

Special Codes for Slides

The following PowerPoint wildcard characters can be used when searching and replacing content.

Use | To find
? (question mark) | Any single character For example, sm?th finds "smith" and "smyth"
* (asterisk) | Any number of characters For example, *east finds "Northeast" and "Southeast"
~ (tilde) followed by ?, *, or ~ | A question mark, asterisk, or tilde For example, fy91~? finds "fy91?"

Replacing in Links and other 'Hidden' Locations

You can specify one or more of the macros below to insert custom text in the Replace With field.

Macro Name | Description
@inputFilename@ or @filename@ | Replaced by the name of the current file being processed. The drive and path section of the filename is removed.
@fullInputFilename@ | Same as @inputFilename, except it includes the complete path
@inputPath@ | The path to the input file, with a trailing slash e.g. 'c:\my files\'
@inputExtension@ | The extension of the input file e.g. '.txt'
@clipboard@ | Inserts the contents of the Windows clipboard
@time@ | Inserts the time in the format HHMMSS
@date@ | Inserts the date in the format YYYYMMDD
@datetime@ | Inserts the date and time in the format YYYYMMDDHHMMSS
@_year@ | Inserts the year in the format YYYY
@_month@ | Inserts the month in the format MM
@_day@ | Inserts the day in the format DD
@_hour@ | Inserts the hour in the format HH
@_minute@ | Inserts the minute in the format MM
@_second@ | Inserts the second in the format SS
@randomdigit@ | Inserts a random digit from 0-9. For two digits, use @randomdigit@@randomdigit
@randomletter@ | Inserts a randomletter from A-Z. For two letters, use @randomletter@@randomletter
@ENV_varname@ | Where varname is the name of an environment variable, this inserts the value of a environment variable e.g. @ENV_OS inserts the text 'Windows_NT' on an NT system. See below for 'what are environment variables'

All fields that support macros have a "context" or right-click menu that allows them to be entered without remembering the exact code.

Special requirements | Replace With text: | With Macro Values | Results in:
If you need to put an @ in the text, simply double it i.e. @@. | hello@@ | N/A | hello@
If you need to include the literal name of a macro, just double the @ | @@randomdigit | @randomdigit=7 | @randomdigit
If you need to place letters or digits immediately after a macro name, end the macro name with @. | @randomdigit@@randomdigit | @randomdigit=7, @randomdigit=2 | 72
 | @randomdigit@@@ | @randomdigit=7 | 7@


Options

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Backup mode

Save a backup of any modified files. If the original file was called test.ppt, the backup is saved to test.bak.

Retain file Modified dates

When checked, the original file date of files is retained.

Retain file Last Access dates

When checked, the original Last Accessed date of files is retained. This allows your organization's data retention policy to be maintained, as documents that have not been accessed by a human still retain their original date.

Allow alerts (necessary for mail merge)

Normally PowerPointPipe disables alerts from Microsoft PowerPoint, which is fine in most cases as the default choice is selected.

Process longest 'Find what' strings first

Very useful for translators, this option causes the search/replace list to be first sorted in order of the longest (i.e. most specific) Find What strings first. A good example is this:

No. | Find What - English | Replace with - Spanish translation
1. | Parent | Padre
2. | Parent Information | Information sobre los padres

If the string 'Parent Information' is found in the file, it gets replaced by 'Padre Information', and the second row is never used. This situation is avoided by first sorting the list so that the longest (i.e. most specific) replacements are first.

Process read only files

When checked, if read-only files are encountered, they are first changed to read-write, processed, and then set back to read-only status. When unchecked, read-only files are skipped.

Keep Microsoft PowerPoint visible while changes are being made

While slower, this option can be useful for debugging and monitoring what PowerPointPipe is doing.

Accept Revisions

Accepts revisions before processing - otherwise they can prevent matches from being found.

Disable Addins

Checked by default, this option disables Microsoft PowerPoint AddIns in case they interfere with the search/replace process. If you need an AddIn to remain loaded then uncheck this box.

Prevent overlap of search/replaces

Prevent chaining of search/replaces where a early replace gets changed by a subsequent search e.g. with the following set of replacements:

Line | Search for | Replace with
1 | cat | dog
2 | dog | rat
3 | rat | foo

Imagine the sentence 'A cat bit the dog'. This will be changed to 'A foo bit the foo' because the replacement on one line is found by the search on the next line.

When this option is checked, the replacement becomes 'A dog bit the rat'.

Password to modify/unprotect

If a document requires a password to modify it, PowerPointPipe will provide this password. The password is ignored if not required.

This password is also used if you specify a Code Module search and a VBProject is found to be protected.

PowerPointPipe restores the original protection when it saves the file.

ISO-9001 version control

If your company is certified to the international ISO-9001 standard, it's essential that you also update each document's version number when any changes are made.

With PowerPointPipe, you can automatically update the version number by 1.0 or 0.1 or any other amount automatically.

'Revision' document property name

This is the name of the custom property that holds the version number in the document, usually 'DocRevision' or similar. For more information, please click here. This field is NOT case-sensitive.

Increment

The amount to increment the revision by, usually 1.0 or 0.1. This value must be a valid floating-point number.


Restart

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Restart control

File to restart after

If you need to restart a job to recover from an error, specify the restart filename in this box. All files prior to AND INCLUDING this file will be skipped.

Microsoft PowerPoint Control

The following options are used for controlling Microsoft PowerPoint - in particular, how Microsoft PowerPoint errors are handed. This settings should be left alone unless you know what you are doing!

Version of Microsoft PowerPoint to invoke (use ONLY with multiple Microsoft PowerPoint installations)

If you have more than one version of Microsoft PowerPoint installed, you can use this field to determine which version PowerPointPipe interacts with.

If you only have one version of Microsoft PowerPoint installed, leave this set to the 'Automatic' setting.

Restart Microsoft PowerPoint after this many documents

Microsoft PowerPoint's performance and reliability can be improved (especially for large documents, and large numbers of documents) if it is restarted periodically.

A value of 0 disables this option, 100 documents is a useful default.

Restart Microsoft PowerPoint automatically if unresponsive for this many seconds

Microsoft PowerPoint can sometimes get stuck when opening a document, for example, if it detects that an error occurred last time it opened a document, it will ask for confirmation. This kind of message can interrupt PowerPointPipe's processing, so you can force PowerPointPipe to restart Microsoft PowerPoint after a given number of seconds of inactivity.

A value of 0 disables this option, 30 seconds is a useful default

Location of PowerPoint.EXE (to restart from catastrophic failures)

Sometimes when Microsoft PowerPoint is restarted it corrupts its own settings in the System Registry, making it impossible to restart using normal methods. By specifying the path to Microsoft PowerPoint, you can get PowerPointPipe to attempt to restart Microsoft PowerPoint directly. Use the browse button to locate PowerPoint.EXE, possibly in C:\Program Files\Microsoft Office\OFFICE11\PowerPoint.EXE.


Go

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Start searching (F5)

When you click this button or press [F5], ExcelPipe will begin searching for the search text. No replacements will be made.

Generate a Hyperlink report

The Link Report is enabled when the Generate a hyperlink report checkbox is checked, AS WELL AS at least one search replace being performed in the Hyperlink address field. It displays both the original and modified urls which is very useful to check new links before they are changed.

Start replacing (F9)

When you click this button or press [F9], ExcelPipe will begin making replacements.


Status Form

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

During processing, PowerPointPipe displays the current status.

You can double click on filenames in the list to open them.

Copy log to Clipboard

This button copies the log data from the currently displayed tab to the clipboard. If the Progress tab is displayed, the log data from each tab is copied to the clipboard.

Copy filenames to Clipboard

This button copies the filenames from the currently displayed tab to the clipboard e.g. If the Progress tab is displayed, the log data from each tab is copied to the clipboard. This option is very handy for copying the files on the Errors tab back to the Files to Process list for re-processing.

Remove Backup files

If Backup Mode was selected, this button can be used to remove all the backup files after a successful run.

Restore Backup files

If Backup Mode was selected, this button can be used to recover all the original files from the backups.

Progress Tab

The current document being processed.

Copy log to clipboard

Copies the entire contents of the selected tab to the clipboard. If the selected tab is the main Progress Tab, then all data is sent to the clipboard.

Copy filenames to clipboard

Copies the filenames of the selected tab to the clipboard. If the selected tab is the main Progress Tab, then all filenames are sent to the clipboard.

Save

Saves the entire contents of the selected tab to a file in either .CSV, .TAB or .XLS format for Microsoft Excel. If you need to filter the results, we highly recommend our text processing tool TextPipe.

Files changed Tab / Files with search text Tab

The documents that have been changed i.e. where a replacement has occurred (or search terms were found). Double-click a filename or one of its subsidiary search terms to open the document, or right-click for a context menu which allows you to open the containing folder.

Files not changed Tab / Files without search text Tab

Lists documents where no replacement occurred (or no search terms were found). Double-click a filename to open the document, or right-click for a context menu which allows you to open the containing folder.

Link Report Tab

The Link Report is enabled when the Generate a hyperlink report checkbox is checked, AS WELL AS at least one search replace being performed in the Hyperlink address field. It displays both the original and modified urls which is very useful to check new links before they are changed.

Errors Tab

If any errors occur, this tab becomes visible, and displays any errors that were encountered, such as documents requiring a password for open or modify.


Command Line Parameters

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

PowerPointPipe can be run from a DOS shell or from a shortcut with parameters to make it run automatically. This is very useful for automation and scheduling (by making the short cut an entry in the Start Up folder), and for running PowerPointPipe from a batch file. Here is a complete example:

"C:\Program files\PowerPointPipe\powerpointpipe.exe" "/f=my replaces.ppp" myfile1.ppt myfile2.pptx /G /Q

Note:

  1. Any commands with embedded spaces must be surrounded with double quotes. You must surround the entire command/setting combination e.g. "/f=c:\Program Files\PowerPointPipe\my replacements.ppp" NOT /f="c:\Program Files\PowerPointPipe\my replacements.ppp"
  2. Windows limits the command line length to about 260 characters. You can overcome this limitation by using the /Z=<filename> command to load command line parameters stored in a file. Note that you MUST remove any double quotes from around commands with embedded spaces when you put them in the command file.

Conventions used below:

<> surrounds text that is to be entered. Do NOT enter the '<' and '>' characters

Alternatives are shown in square brackets '[' and ']' with a pipe '|' character between them. Do NOT enter the square brackets or the pipe character - just type the single alternative you require.

Usage:

"C:\Program files\PowerPointPipe\powerpointpipe.exe" [/MINIMIZED|/MAXIMIZED] ["/F=my replaces.ppp"] [commands] [filenames] [/G [/Q]]

Where [commands] is zero or more of:

[filenames] | Any files, folders or filename specifications (e.g. *.doc) specified on the command line will cause PowerPointPipe to select the 'Process List of Files' option and add the given data. If your settings already specifies a list of files, those from the command line are appended.
/F=<.ppp filename> | Opens a PowerPointPipe settings file.
/REPORT=<report filename> | At the conclusion of the job, a text file report is written to the given filename. The /REPORT parameter must be after any /F command and before the /G command.
/G | Go. Begin processing replacements with PowerPointPipe. Processing of the command line does not continue until the processing job is complete.
/GS | Same as /G, but search only mode.
/I=<filename> | Imports a search/replace list from Excel, Tab or CSV-delimited file, and adds it to the end of the grid. The current options settings are used for each row added.
/MAXIMIZED | Opens the application maximized.
/MINIMIZED | Opens the application minimized.
/Q | Quit PowerPointPipe at the end of processing.
/Z=<filename>
 Read command line parameters from the specified file. Very useful for performing large numbers of changes, or for working around the Windows limitation of approx 260 characters on the command line.

For example, if you had the long command line

start /w powerpointpipe.exe "/f=my special filter.ppp" /g "/f=my special filter2.ppp" /g "/f=my special filter3.ppp" /g "/f=my special filter4.ppp" /g /q

This would change to something like

start /w powerpointpipe.exe /z=commands.txt

and the file commands.txt would contain

/f=my special filter.ppp
/g
/f=my special filter2.ppp
/g
/f=my special filter3.ppp
/g
/f=my special filter4.ppp
/g
/q


Access to code modules disallowed

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Access to code modules disallowed. See the help file under Code Modules security

This errror message is displayed by WordPipe, ExcelPipe and PowerPointPipe when a search/replace is performed with the Code Modules search location is checked, and you have not provided a password or specified the wrong password on the Options tab, Password to Unprotect field.

To rectify the problem, provide the correct password, or handle this file manually.

Security

If you get the error message Programmatic Access to Visual Basic Project is not trusted, you need to change your Microsoft Excel security settings. To turn on access, the user must follow these steps.

Office 2003 and Office XP

1. | Open the Office 2003 or Office XP application in question. On the Tools menu, click Macro, and then click Security to open the Macro Security dialog box.
2. | On the Trusted Sources tab, click to select the Trust access to Visual Basic Project check box to turn on access.
3. | Click OK to apply the setting. Restart the Office 2003 or Office XP application in question.

Office 2007

1. | Open the 2007 Microsoft Office system application in question. Click the Microsoft Office button, and then click Application Options.
2. | Click the Trust Center tab, and then click Trust Center Settings.
3. | Click the Macro Settings tab, click to select the Trust access to the VBA project object model check box, and then click OK.
4. | Click OK.


EasyPattern Primer

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

EasyPatterns™ are a revolutionary new way to describe text patterns that is easy to understand, easy to use, and still just as powerful as the old-hard to understand Perl-style or grep-style pattern matching languages.

  • Download the EasyPattern Helper - very handy if you use Perl patterns frequently
  • The complete EasyPatterns reference
  • Applications using EasyPatterns
  • Developers! - use the EasyPattern Engine in your own applications, royalty free!

What is a Pattern?

A pattern describes text in a general way. Searching based on literal text yields only one match, whereas searching with a pattern can match a whole class of text that shares the specified characteristics. Phone numbers (in North America) are a perfect example: three groups of digits separated by various punctuation characters. Here's a simple Text Machine pattern that will find most phone numbers:
[3 digits, punctuation, 3 digits, punctuation, 4 digits]

Let's suppose that you have a list of addresses phone numbers gathered from different sources. The phone numbers are likely to be in many formats: some with / and -, some with periods, etc. To convert them to a consistent format you need to keep the three groups of digits and insert new punctuation in between. With TextPipe's EasyPatterns, this is as easy as
Search for: "[punctuation, capture(3 digits), punctuation, capture(3 digits), punctuation, capture(4 digits)]"
Replace with: "$1-$2-$3"

This section introduces all of the essential elements of EasyPattern patterns. If you are new to pattern-matching, there's no reason you have to read the entire section at once. Feel free to stop after any section and continue with the next 2 sections or spend time reviewing example. Also, don't worry if you don't immediately understand every point. The only way to learn pattern matching is to create your own patterns, including the inevitable trial and error required to get just the right match. TextPipe's trial run area was designed with this in mind.

Throughout this text and the reference section, double quotes are used around both the pattern and the example text that it would match. The double quotes should *NOT* be entered in TextPipe.

Basics

Unlike other pattern matching languages, EasyPatterns use plain English keywords such as "letter" and "digit" to define text patterns. At the most basic level, each keyword appears in [square brackets], e.g.
"[letter][digit]" « matches "a0" ... "a9", "b0" ... "b9", etc.

Why use brackets? Patterns can also include literal text; brackets distinguish that from the pattern specification:
"abc[digit]" « matches "abc0", "abc1" ... "abc9"
"Z[letter][letter]" « matches "Zoo", "Zed", etc.
"whatever" « keywords are not required, EasyPattern can search just for literal text

In addition to simple keywords, the brackets can also contain expressions. The most common expressions indicate repetition, e.g.
"[optional digit]" « 0 or 1
"[oneOrMore digits]" « 1, 2 or many (no spaces are allowed in "oneOrMore")
"[1+ digits]" « same meaning, different notation
"[3+ digits]" « 3 or more
"[3 digits]" « exactly 3
"[3 to 5 digits]" « 3, 4 or 5

Simple keywords and expressions can be combined, e.g. here's a pattern that matches many North American telephone numbers:
"[3 digits][punctuation][3 digits][punctuation][4 digits]"

That's a lot of brackets! The above pattern works, but EasyPattern also allows multiple keywords and expressions to be combined with commas, e.g.
"[3 digits, punctuation, 3 digits, punctuation, 4 digits]"

In fact, even the commas are optional, though you may find they make the pattern easier to read.
"[3 digits punctuation 3 digits punctuation 4 digits]"

Many patterns require mixing keywords with literal text, e.g. to find telephone numbers in a certain local exchange:
"978[punctuation]692[punctuation, 4 digits]"

That pattern works fine; EasyPattern also lets you include the literal text inside the bracketed expression using single quotes:
"['978', punctuation, '692', punctuation, 4 digits]"

Character Sets

One of the fundamental ideas in pattern matching is that each character belongs to one or more character sets. For example, "a" is a member of the set of letters, represented by the keyword "[letter]". "2" is a member of the set "[digit]", etc. In EasyPattern, character sets can be combined with "or". For example, both "a" and "2" are members of the combined set "[letter or digit]". You can combine any number of sets with "or", e.g. "[letter or punctuation or symbol or whitespace]" is nearly everything except digits.

You can also use "or" to combine individual characters into a set, e.g. "[space or tab]". See the EasyPattern Reference for many additional whitespace options.

Tip: Parentheses are not required. For example, "[1+ space or tab]" and "[1+ (space or tab)]" have the same meaning.

The keyword "[char]" or "[character]" represents the set of all characters, including letters, digits, punctuation, symbols, space, tab, return, linefeed, formfeed and control characters. (NULL is not included; see EasyPattern Reference for details and a workaround.) Sometimes you want to match every character in a paragraph, i.e. every character except return (or formfeed). EasyPattern has a special keyword "[paragraphChar]" for this situation. For example, given the text "abc" then a return then "123":
"[1+ char]" « matches all 7 characters
"[1+ paragraphChar]" « matches the first 3 characters

Tip: Look up "[paragraphChar]" in the EasyPattern Reference; you'll find a whole family of keywords for words, columns, lines & paragraphs.

Sometimes it's easier to specify the set that you don't want rather than listing everything you want:
"[not letter]" « match anything except a letter "[not letter or digit]" « match anything except a letter or digit "[1+ not letter or digit]" « matches a sequence of characters Tip: Since "not" is processed after the character set use of "or", parentheses are still optional. For example, "[not space or tab]" and "[not (space or tab)]" have the same meaning.

Alternatives

One of the most powerful features of EasyPattern isn't related to patterns per se: the ability to find a match from among two or more choices. Some examples:
"this[or]that"
"['this' or 'that']"
"EasyPattern[or]Player"
"StarTrek[or]StarWars[or]OSA[or]scripting"

Tip: If you include an alternative in a larger pattern, you must include parentheses:
"[digit ('this' or 'that')]"

The keyword "or" has two uses: combining character sets and listing alternatives. The differences are sometimes subtle though will become more clear with experience. See the EasyPattern Reference for details.

Groups

EasyPattern lets you group any part of a pattern with parentheses. Groups can also be identified with a number to capture the text that the group matched for later use, either in a replacement string, or in a later part of the pattern, e.g. [( ... )1]. The number given is irrelevant – it simply serves to mark the parentheses as a group.

There are many reasons to group parts of a pattern:

  • Apply quantity or repetition to a group, e.g. [1+ (letter, digit)] will match "r2d2"
  • Specify one of many alternatives with "or"
  • Mark logical groups to make the pattern easier to read
  • Extract a certain portion of a pattern (where the full pattern is required to provide context)
  • Replace certain portions of a pattern, including changing the order

For example, you could change phone numbers from many different formats to your preferred format, searching for:
"[punctuation, capture(3 digits), punctuation, capture(3 digits), punctuation, capture(4 digits)]"

and replacing with:
"$1-$2-$3"

Tip: Parentheses groups can be nested to any level, e.g. [1+ ((letter, digit) or (digit, letter))] will match "r2d2", "r22d", "2rd2", "2r2d", etc.

Case in Keywords

EasyPattern keywords are not allowed to contain spaces, and are not case sensitive; e.g. [uppercaseLetter], [UppercaseLetter], [UPPERCASELETTER], [UppErcAsELEttEr] are equivalent.

Case in Literals

Although keywords are not case sensitive, the case sensitivity of literal text is controlled by TextPipe 'Match Case' option.

Patterns in Replace Strings

In the simplest replacement, you will find a pattern and replace it with literal text, e.g.
replace "*[or]_" with "-"

To add literal text before or after existing text, use $0 to represent the entire found text, e.g.
replace "-[space]" with "\t$0" -- insert a tab before list items

The phone number example shows a common use of [(...)#] and $# (where # is a number from 0-9); here's another example:
replace "[(column)1 tab (column)2]" with "$2\t$1" -- swap columns

What Next?

EasyPattern's core vocabulary was covered in this section. The best way to learn is by creating patterns for real-world tasks. When you have questions on the basics, refer back to this section. If you need a more detailed explanation of any topic or are looking for additional keywords to handle a new case, see the EasyPattern Reference.

Converting Perl patterns for readability

Perl pattern | EasyPattern
. | [char]
.* | [zeroOrMore char], [0+ char]
.+ | [oneOrMore char], [1+ char]
[a-zA-Z] | [letter]
[0-9] | [digit]
\x20 | [space]
  • Download the EasyPattern Helper - very handy if you use Perl patterns frequently
  • The complete EasyPatterns reference
  • Applications using EasyPatterns
  • Developers! - use the EasyPattern Engine in your own applications, royalty free!


EasyPatterns Reference

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

  • Download the EasyPattern Helper - very handy if you use Perl patterns frequently
  • Applications using EasyPatterns
  • Developers! - use the EasyPattern Engine in your own applications, royalty free!

Contents - EasyPatterns 2.1

  • Specifying literal text/static text
  • Common character classes such as letters and digits
  • Combining character classes and creating your own character classes, Custom Sets
  • Handling alternatives - A or B
  • How many repeats? Quantity, repetition and optional pieces, Greediness
  • Grouping text and capturing text for use in a replace string
  • Commenting your patterns for readability
  • Patterns for whitespace
  • More Keywords - Positions, Punctuation, Data Processing, Date and Time
  • Advanced - operator precedence, order of operations

Conventions: Actual EasyPatterns are highlighted with [...].

Specifying literal text/static text

The only character that is 'special' is the left square bracket or [. The simplest pattern is just literal text, with no left square brackets. Whenever we need EasyPattern keywords we just put them inside [...].

EasyPattern | Description | Matches this text...
hello there | No [ ... ] expression has been used, this is just literal text | hello there
hello there [longest 1 or more letters] | The special part is [longest 1 or more letters] | hello there Fred, hello there Cornelia, etc
I am [1 or more digits] years old] | The special part is [1 or more digits] | I am 2 years old, I am 302 years old, etc
This is a left square bracket [ '[' ] | This shows how to insert a left square bracket in literal text. | This is a left square bracket [

To use multiple keywords, you can either

Put them next to each other | [...][...] | e.g. [letter][digit] matches "a1", "b1", etc.
Put commas between them | [..., ...] | e.g. [letter, digit] instead of [letter][digit]
Put spaces between them | [... ...] | e.g. [letter digit] instead of [letter][digit]

You can also put literal text anywhere inside [...] using single quotes or double quotes.

['literal'] | e.g. "['abc']" instead of "abc"
[... 'literal'] | e.g. "[digit, 'abc']" instead of "[digit]abc"
['literal' ...] | e.g. "['abc', digit]" instead of "abc[digit]"
[... 'literal' ...] | e.g. "[digit, 'abc', digit]" instead of "[digit]abc[digit]"

  • There is usually no difference in meaning between including literal text within a bracketed expression (in single quotes) and leaving literal text outside the brackets. The choice is a matter of individual preference. One exception: when using [not], only the single-quoted literal will work, e.g. [not '-'].

Common character classes such as letters and digits

The most important keywords represent character classes or sets, that is, a set of related characters.

Any character, letters, digits, etc.
[character], [char], [chars], [characters] | All 256 chars (every character including NULL). EasyPattern's [character] or [char] will match any character including return. If you want any character except a return (or formfeed), use [paragraphChar]; that is, any character that could appear in a paragraph. Details below.
[letter], [letters] | Includes é and ü, common in certain European languages.
[digit], [digits], [number], [numbers] | Decimal digits 0-9
[hexdigit] | Hexadecimal digits 0-9, a-f and A-F
[EBCDICdigit] | An EBCDIC digit, ASCII F0-F9
[punctuation] | Printing characters, excluding letters and digits, includes !?.,:; " ' ' / - () {} - Note that « and » are considered punctuation.
[symbol], [symbols] | ~@#$%^&* EasyPattern distinguishes punctuation from symbols; the sets do not overlap. For broader combinations, see [printableChar] and [typewriterChar]. For narrower focus, see [sentencePunctuation], [anyQuote], [anyBracket] and [anyDash].
Special letters
[upper], [uppercase], [uppercaseLetter] | Uppercase letters. Note: In TextPipe you will also need to enable the Match Case option for this to make any difference.
[lower], [lowercase], [lowercaseLetter] | Lowercase letters. Note: In TextPipe you will also need to enable the Match Case option for this to make any difference.
Reserved punctuation
[leftBracket] | [
[rightBracket] | ]
[leftParen], [leftParenthesis] | (
[rightParen], [rightParenthesis] | )
[leftAngle], [lessThan] | <
[rightAngle], [greaterThan] | >
[comma] | ,
[singleQuote] | '
[doubleQuote], [quote] | " (i.e. standard ASCII "straight" quotation mark)
[backwardSingleQuote] | `
ASCII function()
asc(code, ...), ascii(code, ...) | The ASCII() or ASC() function embeds arbitrary control characters by entering the control code in decimal or hex (precede the hex digit with '$" eg $ff). You can add one or more control characters by separating each with a space or comma. e.g. ASC( 65, 66 ) outputs 'AB' into the pattern.
EBCDIC function()
ebcdic( literal ) | The EBCDIC() function embeds Mainframe EBCDIC characters translated from a string literal you provide e.g. EBCDIC( '0' ) outputs \xF0 (an EBCDIC '0')
  • Square brackets are "reserved" by EasyPattern. The other punctuation marks listed here are literal when they appear outside of brackets.

  • EasyPattern gives special meaning to certain punctuation marks; these keywords can be used to represent the literal character.

  • A literal comma and left & right brackets & parentheses may appear inside single quotes. The keywords are provided to make patterns easier to read.

Combining character classes and creating your own character classes

There are many ways to create your own character sets to match exactly the characters you require.

You can combine existing character sets using "or":

[... or ...]

e.g. [letter or digit], ['a' or 'b']

  • Most EasyPattern keywords refer to a set of characters from which one will match. The first use of "or" is to make a larger set -- though again, only one of the larger set will match. (Any quantity can be specified using repetition keywords, but it is still applying a quantity to a single character not to multiple characters)

  • When sets are combined with "or", parentheses are optional. (In technical terms, the character set use of "or" has very high precedence; see below)
    [letter, letter or digit, letter] -- matches "aaa", "xyz", "h4q", "b7f" etc.

It doesn't hurt to add parentheses even though they are not required.
[letter (letter or digit) letter] -- same as above

Negation - Match anything except a given set

Instead of specifying all the characters that could occur in a match, it is often convenient to specify characters that could not occur.

[not ...], [non ...], [anyExcept ...]

e.g. [oneOrMore non letter]

  • EasyPattern has keywords for [quotedString] and [HTMLTag], but if it didn't, they would be easy to define:
    ['<', oneOrMore not '>', '>'] « same as [HTMLTag]
    [quote, oneOrMore not quote, quote] « a simple definition for [quotedString]

  • Negation can only be applied to a single character, or a character set from which one will match. For example:
    [not letter] « fine
    [not letter or digit] « fine: [letter or digit] is a set from which one will match
    [not word] « ERROR: "word" matches multiple characters
    [not 'a'] « fine (a single character)
    [not 'whatever'] « ERROR
    [not lineChar or letter] « CAREFUL! [lineChar] is defined as [not linefeed OR verticalTab OR formfeed OR return]. You cannot combine negated and non-negated characters sets, so this pattern is equivalent to [ (not lineChar) or letter ], instead of [ not (lineChar or letter) ]

Custom Sets

Keywords such as [letter] and [digit] are character sets defined internally to EasyPattern; the angle bracket notation lets you define your own characters sets. In both case, EasyPattern matches any single character in that set.

[<...>]

e.g. [<aeiou>], [<135>], [<!@#$%^&*>]

  • For single characters, [or] and a set are interchangeable, e.g. [<aei>] and ['a' or 'e' or 'i'] have the same meaning.

  • User defined sets, single character literals and EasyPattern keywords can be combined with [or]:
    [<aeiou> or <123> or '7' or symbol]

Handling Alternatives - A or B

alternative patterns with "or"

[... or ...]

e.g. ['Player' or 'EasyPattern']

  • When [or] is used to specify alternatives as part of a larger pattern, grouping parentheses are required, e.g.
    [space, 'Player' or 'EasyPattern', space] -- may not mean what you think!
    [space]Player[or]EasyPattern[space] -- may not mean what you think!
    [(space, 'Player') or ('EasyPattern', space)] -- that's what they mean
    [space ('Player' or 'EasyPattern') space] -- this might be what you wanted

Remember: as noted in the section on expressions, commas are allowed between items to make patterns easier to read; they do not affect what the pattern means.

  • If you leave out the parentheses, EasyPattern will treat everything to the left of the [or] as one implicit group and everything to the right of the [or] as a separate group. Note that visual grouping with brackets or commas is not enough; you must use parentheses. For example, all of the following will be interpreted as [(digit, 'this') or ('that')]:
    [digit, 'this' or 'that'] « careful; the commas may mislead
    [digit]['this' or 'that'] « careful; the brackets may mislead
    [digit 'this' or 'that'] « the grouping isn't clear; parentheses would help
    [digit]this[or]that « the grouping isn't clear; parentheses would help

As noted in the previous section, parentheses are not required when [or] is used to combine character sets.

"or" as set vs. "or" as alternative

In many cases, you don't have to worry that there are two different uses for "or"; both generally make sense in context. However, there are 2 reasons for learning the differences:

  • or as set doesn't require parentheses; the grouping is implied

  • or as set can be part of a "not" expression since it still represents one character

How many repeats? Quantity, repetition and optional pieces

Notation: "..." is any appropriate keyword or expression, # is a number (one or more digits; the maximum varies with context).

repetition | examples | will match...
[optional ...], [zeroOrOne ...] | [digit, optional letter], [digit, zeroOrOne letter] | 2, 2a
[0+ ...], [zeroOrMore ...] | [digit, zeroOrMore letters] | 2, 2a, 2aa, 2aaa, 2aaaa...
[1+ ...], [oneOrMore ...] | [digit, oneOrMore letters] | 2a, 2aa, 2aaa, 2aaaa...
[2+ ...], [many ...], [twoOrMore ...] | [digit, many letters], [digit, twoOrMore letters] | 2aa, 2aaa, 2aaaa...
[#+ ...] | [digit, 5+ letters] | 2aaaaa, 2aaaaaa...
  • A space is not allowed, e.g. [one or more] will not be recognized
  • The words are all special cases, e.g. [threeOrMore ...] will not work (use [3+ ...])

specific quantity, quantity range (where # is a number)

will match...

[# ...]

[5 letters]

aaaaa, bbbbb

[# to # ...]
[# - # ...]
[# .. # ...]

[3 to 5 letters]
[3-5 letters]
[3..5 letters]

aaa, aaaa, aaaaa

Quantities can now be entered in Hex form by preceding them with '$' e.g $ff.

Greediness, or shortest match vs longest match

When the repetition or count includes a range of values to match, EasyPattern has the choice of matching the "shortest" sequence of characters that fits the pattern, or the "longest" that fits the pattern. For example

[shortest zeroOrOne ...] | 0 or 1 | will try to match zero occurrences
[shortest zeroOrMore ...] | 0+ | will try to match zero occurrences
[shortest oneOrMore ...] | 1+ | will try to match one occurrence
[shortest twoOrMore ...] | 2+ | will try to match two occurrences

EasyPattern defaults to the SHORTEST match so the "shortest" keyword is optional.

[shortest ... ...] | match the lowest possible number of repetitions (default)
[longest ... ...] | match the highest possible number of repetitions

  • In these cases, EasyPattern will only match more than the minimum if required to complete additional parts of the pattern, e.g. given "abc123" and the pattern [shortest oneOrMore letter, digit], EasyPattern will match "abc1", i.e. all 3 letters. However, given the same string and the pattern [shortest oneOrMore letter], EasyPattern will just match "a" the first letter. Given the same string and [longest oneOrMore letter], EasyPattern will match "abc". Note that EasyPattern always starts with the first character that matches that pattern, e.g. despite "c1" being shorter than "abc1", EasyPattern matches the latter.

  • Shortest/longest can be confusing.

  • Shortest can be quite slow, use "not" if possible

Literals, groups

All of the repetition & quantity keywords can be applied to literals and groups as well as to individual keywords, e.g.
[oneOrMore 'ab'] « matches "ab", "abab", "ababab" etc.
[oneOrMore letter or digit] « matches "aaa", "456", "a45bbb" etc.
[oneOrMore not letter or digit] « matches punctuation, symbols, whitespace etc.
[oneOrMore ('alpha' or 'omega')] « matches "alphaalapha", "alphaomega" etc.
[oneOrMore (letter, digit)] « matches "r2", "r2d2", "r2d2f7b2c4" etc.

Grouping text and capturing text for use in a replace string

[(...)] | A non-capturing group
[capture(...)] | Assigns the contents of the group to a variable which can be referred to later in both the search pattern ([group#] e.g. [group6] ,# can range from 1 to 26) and in the replacement string ($# e.g. $6, # can range from 1-9, a-z. $0 represents the entire matched string).
[group#] | Matches the same text that a previously captured group found. [capture(letter), group1] « matches "ee", "bb", "cc" etc
[mustBeginWith(...) ...], [mustNotBeginWith(...) ...] | When a match is found, it must be/must not be preceded by what is in the brackets. The bracket contents are NOT included in the actual match. The bracket contents are limited to fixed length strings - so no '3+' etc are allowed. This must be the first part of your pattern. [mustBeginWith( 'hello' or 'goodbye' ) 'fred']
[... mustEndWith(...)], [... mustNotEndWith(...)] | When a match is found, it must be/must not be followed by what is in the brackets. The bracket contents are NOT included in the actual match. The bracket contents are limited to fixed length strings - so no '3+' etc are allowed. This must be the last part of your pattern. ['fred' mustEndWith( 'erick' or 'dy' ) ]

  • Parentheses must match, i.e. ")" always ends the most recent "(", independent of number.

Commenting your patterns for readability

EasyPattern allows comments to be included in multi-line patterns using the character ';' or '#' to make the start of a comment, extending until the end of the line e.g.

[ 3 space ;look for 3 spaces
'hello' #then the keyword we want
]

Patterns for Whitespace

[space], [spaces] | ASCII 32
[nonbreakingSpace] | ASCII 202
[whitespace] | [space OR tab OR cr OR lf OR verticalTab OR nonbreakingSpace]
[tab] | ASCII 9, \t
[return], [cr] | ASCII 13, \r
[linefeed], [lf] | ASCII 10, \n
[verticalTab] | ASCII 11
[formfeed] | ASCII 12, \f
[null] | ASCII 0
[CRLF] | [return, linefeed]
[newline] | [(return, linefeed) or return or linefeed]
[DOSNewline] | [return, linefeed]
[UNIXNewline] | [linefeed]
[MacNewline] | [return]
  • [not] cannot be applied to [CRLF], [newline] or [DOSNewline] since they either are or may be a character sequence rather than just a single character.
  • A space character can usually be typed directly into a pattern ([ ' ' ]) but using the keyword may make the pattern easier to understand (and modify later)

Whitespace combinations

[horizontalWhitespace], [hSpace] | [space or nonbreakingSpace or tab]
[verticalWhitespace], [vSpace] | [return or linefeed or formfeed or vertical tab]
words, columns, lines & paragraphs
[wordDelimiter] | [space OR tab OR linefeed OR verticalTab OR formfeed OR return]
[wordChar] | [not wordDelimiter]
[word] | [1+ wordChar]
[columnDelimiter] | [tab OR linefeed OR formfeed OR return]
[columnChar] | [not columnDelimiter]
[column] | [1+ columnChar] Note: Use [0+ columnChar] instead if the column could be blank
[lineDelimiter] | [linefeed OR verticalTab OR formfeed OR return]
[lineChar] | [not lineDelimiter]
[line] | [1+ lineChar] Note: Use [0+ lineChar] instead if the line could be blank
[paragraphDelimiter] | [formfeed OR return]
[paragraphChar] | [not paragraphDelimiter]
[paragraph] | [1+ paragraphChar]

  • The above delimiters are characters not positions; they will "consume" the character that they match. In contrast, [TextStart] and [TextEnd] (below) are positions.

  • The above objects (word, column, line, paragraph) do not include delimiters. So, to match multiple objects, you need to include the delimiters, e.g.
    [2+ word] -- won't match anything
    [2+ (word, optional wordDelimiter)] -- correct

  • The definition for word is based strictly on whitespace so it will include punctuation, matching text such as "$27.52" and "fancy+name". Although in many cases it would be nice to exclude trailing punctuation, that pattern would fail for text like "S.M.U.". When EP's definition of a word isn't appropriate for your text, simply use the custom pattern that fits. For example, [1+ wordChar, letter or digit or symbol] would ensure that the last char is not punctuation.

  • Word, column, line & paragraph require one or more character. If a line might be empty, use: [0+ lineChar] instead of [line].

  • Because the definitions for word, column, line & paragraph look for anything except the appropriate delimiter (rather than the leading delimiter, a series of anything else, and the trailing delimiter), they can be used to get the rest of a word, column, line & paragraph when the starting point is already in the middle.

  • These definitions allow control characters (except the specific whitespace used as delimiters) to appear in words, columns, lines & paragraphs.

  • A column may contain the verticalTab character (it's used by FileMaker to indicate line breaks within a field)

  • Word, column, line & paragraph consist of multiple characters so patterns like [not word] don't make sense.

Positions

[textStart] | matches at start of entire text
[textEnd] | matches at end of the entire text or before newline at end
[lineStart] | matches the start of a line (*)
[lineEnd] | matches the end of a line (*)
[wordBoundary] | matches at a word boundary
[notWordBoundary] | matches when not at a word boundary

(*) [lineStart] and [lineEnd] will work fine if the file you're editing has Unix end of line characters, because the core EasyPattern engine assumes this. For DOS or Windows files, you should use
[ cr lf or textEnd ]
or
[ mustEndWith(cr lf or textEnd) ]

More Keywords

Combinations

[controlChar]

characters 0-31, 127 (careful: includes most whitespace)

[gremlin]

characters 0-31. The definition for [gremlin] is more cautious than in some products.

[printableChar]

[letter or digit or punctuation or symbol] (anything that prints ink on paper)

[typewriterChar]

[printableChar or space or tab or return] (excludes linefeed, vertical tab & formfeed)

Punctuation subsets (these items are included in [punctuation])

[sentencePunctuation]

.,;:!?¿¡

[anyBracket], [anyBrackets]

left/right paren/bracket/brace (i.e. "bracket" in the broad sense of the term)

[anyQuote]

[doubleQuote OR singleQuote OR backwardSingleQuote]

[dash], [hyphen]

- used interchangeably. we have adopted the common notion that these terms refer to the same character

[period]

.

[caret]

^

[pound], [hash]

#

[slash]

/

[backslash]

\

[colon]

:

[percent]

%

[star], [asterisk]

*

[ampersand] &

[pipe]

|

Real-world patterns

[HTMLTag]

<[1+ not '>']>

[HTMLStartTag]

<[not '/', 0+ not '>']> (i.e. any tag except an end tag)

[HTMLEndTag]

</[1+ not '>']>

[QuotedString]

[quote, 1+ ((backslash, quote) or not quote), quote]

[SocialSecurityNumber]

[3 digits, dash, 2 digits, dash, 4 digits]

[PhoneNumber]

Matches a US-style (xxx) xxx-xxxx number with a variety of punctuation marks. The matching text is captured into 3 successive $variables

[EmailAddress]

Matches email addresses. The name and domain parts are captured into 2 successive $variables

[IPAddress]

Matches numeric IP addresses. The matching text is captured into 4 successive $variables

[CreditCard]

Matches credit card numbers with a variety of punctuation marks. The matching text is captured into 4 successive $variables

[Hyperlink]

Matches a ftp, http, https, telnet, gopher or nntp internet url. The matching text is captured into 3 successive $variables

[DuplicateWord]

Matches a repeated word. The matching text is captured into 2 successive $variables

[PageNumber]

Matches a page number of the following forms:
Page dd
Page No dd
Page No. dd
Page Num. dd
Pg Num dd
Page Number dd.

The matching text is captured into 3 successive $variables (Page, Number, #)

Data processing patterns (in TextPipe 6.8.2 and later)

[CSVfield]

A Comma-Separated-Value field. If fields are delimited by single or double quotes, embedded newlines are allowed, as are doubled-up quotes. The quotes are returned as part of the match.

[TABfield] A Tab-delimited field. To process multiple tab fields e.g.
[ 3 or more ( TABfield Tab) TABfield ]

[PipeField]

A Pipe-delimited field. To process multiple pipe fields e.g.
[ 3 or more ( PipeField '|' ) PipeField ]

Date and time patterns

[Date]

Matches a date format DD-MM-YY or DD-MMM-YY e.g. 01-Jan-02, 29-03-98

[AMPM]

The AM/PM part of a time

[Month]

A MonthName or a MonthNumber

[MonthNumber]

1-12, with an optional leading zero e.g. 03, 12, 4, 7

[MonthName]

January-December and Jan-Dec

[Day]

1-31, with an optional leading zero e.g. 1, 13, 08, 28

[DayNumber]

01-31 (the leading zero is required) e.g. 01, 08, 13

[DayName]

Sunday-Saturday and Sun-Sat

[DayOfYear]

1..366

[Year]

A 2 or 4 digit year (between 1800 and 2199)

[Hour]

A 12 or 24-hour hour, with optional leading zero

[Minute]

A 2 digit minute with leading zero

[Second]

A 2 digit second with leading zero

Using the real world patterns above, you can easily construct the following EasyPatterns:

HMS | [ Hour <:.-> Minute <:.-> Second ]
DMY | [ Day <-/ > Month <-/ > Year ]
MDY | [ Month <-/ > Day <-/ > Year ]
YMD | [ Year <-/ > Month <-/ > Day ]
Julian | [ Year DayOfYear ]
MY | [ Month <-/ > Year ]
MD | [ Month <-/ > Day ]
DM | [ Day <-/ > Month ]
HM | [ Hour <:. > Minute ]

Advanced - Operator precedence, Order of operations

A complete pattern may include many individual keywords and many expressions. How do you know which keywords go together and where one expression stops and another begins? If in doubt, just enclose every expression in parentheses. But, EasyPattern has rules for combining keywords into expressions, so parentheses aren't always required. The traditional way of expressing these rules is to list the "precedence" of various operators or terms.:

  • (...), including numbered groups

  • [or] for characters sets and single-character literal

  • [not]

  • quantity specifiers ( oneormore, 2+, 3..7, etc)

  • character set keywords (e.g. letter, digit) and single-character literals

  • multi-character literals

  • [or] as alternative, for groups and multi-character literals

Items with high precedence don't need parentheses; they group together automatically. For example, let's build a pattern step-by-step using the "high precedence" operators:
[letter or digit] « "or" for characters set keywords
[letter or digit or '.'] « and single-character literal
[letter or digit or '.' or <!?>] « and arbitrary set
[not letter or digit or '.' or <!?>] « reverse the meaning with not
[1+ not letter or digit or '.' or <!?>] « add a quantity specifier
[1+ (not (letter or digit or '.' or <!?>))] « if you like parentheses, though the meaning is the same

Adding lower precedence terms before, after or both doesn't change the grouping, though the expression is long enough that you may find a pair of commas, brackets, or parentheses helpful. As long as you understand how EasyPattern is doing the grouping, it doesn't matter whether you choose commas, brackets or parentheses. If the parentheses are added around something that is already a group, they don't change the meaning.
[punctuation 1+ not letter or digit or '.' or <!?> symbol]
[punctuation, 1+ not letter or digit or '.' or <!?>, symbol] « same meaning but easier to read
[punctuation][1+ not letter or digit or '.' or <!?>][symbol] « same meaning
[punctuation (1+ not letter or digit or '.' or <!?>) symbol] « same meaning

Remember, commas and brackets don't change the meaning, only the look. If you put them in the middle of high precedence terms, you might confuse yourself:
[punctuation 1+ not letter][or][digit or '.' or <!?> symbol] « same meaning but HARDER to read
[punctuation 1+ not letter, or, digit or '.' or <!?> symbol] « same meaning but HARDER to read

Only parentheses change the meaning:
[(punctuation 1+ not letter) or (digit or '.' or <!?> symbol)] « different meaning

Note that [or] for character sets and [or] as alternative have opposite precedence. See Character Sets and Alternatives (above) for details & examples.

EasyPattern vs. perl regex or grep

At its core, EasyPattern uses "regular expression" technology that is similar to the "regex" or "grep" tools that originated on UNIX. EasyPattern's primary benefit is that the patterns are much easier to read and write.

For those who have some experience with regex, here are a few specific differences:

  • Quantity is specified as a prefix rather than a suffix. We believe prefix notation is much more natural.
    e.g. [1+ digit] rather than "[0-9]+"

  • Parentheses groups are not automatically numbered. Drawback (to some): you have to include a number if you want to refer to that matched portion. Benefits: the parentheses that are there just for logical grouping don't get numbered.

  • No backslashes are required to "escape" special characters (instead, EasyPattern provides keywords such as [rightBracket]). Benefit: Other pattern languages already use backslash as an escape character so extra backslashes make patterns even more difficult to read.

  • EasyPattern includes keywords for many character sets that require a custom bracketed set in regex, e.g. punctuation, whitespace, paragraph, column, etc.

  • EasyPattern keywords generally include Macintosh-specific characters, e.g. [letter] includes letters with umlauts and other diacritical marks

  • EasyPattern can combine character sets with [or] (as well as use [or] for alternatives).

  • EP's [character] or [char] will match any character; the "equivalent" in some products will match anything except carriage return. If you want any character except a return (or formfeed), use [paragraphChar]; that is, any character that could appear in a paragraph. Of course, [not return] works too.

We welcome suggestions for extensions to the EasyPattern language - please contact us.

  • Download FREE! Download EasyPattern Helper (750 KB) - very handy if you use Perl patterns frequently
  • Applications using EasyPatterns
  • Developers! - use the EasyPattern Engine in your own applications, royalty free!


Pattern Matching Reference

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

This HTML document has been generated automatically from the original man page. If there is any nonsense in it, please consult the man page, in case the conversion went wrong.

· PCRE REGULAR EXPRESSION DETAILS
· BACKSLASH
· CIRCUMFLEX AND DOLLAR
· FULL STOP (PERIOD, DOT)
· MATCHING A SINGLE BYTE
· SQUARE BRACKETS
· POSIX CHARACTER CLASSES
· VERTICAL BAR
· INTERNAL OPTION SETTING
· SUBPATTERNS
· NAMED SUBPATTERNS
· REPETITION
· ATOMIC GROUPING AND POSSESSIVE QUANTIFIERS
· BACK REFERENCES
· ASSERTIONS
· CONDITIONAL SUBPATTERNS
· COMMENTS
· RECURSIVE PATTERNS
· SUBPATTERNS AS SUBROUTINES
· CALLOUTS
· UTF-8 Support
· Differences from Perl

PCRE REGULAR EXPRESSION DETAILS

The syntax and semantics of the regular expressions supported by PCRE are described below. Regular expressions are also described in the Perl documentation and in a number of other books, some of which have copious examples. Jeffrey Friedl's "Mastering Regular Expressions", published by O'Reilly, covers them in great detail. The description here is intended as reference documentation.

The basic operation of PCRE is on strings of bytes. However, there is also support for UTF-8 character strings. To use this support you must build PCRE to include UTF-8 support, and then call pcre_compile() with the PCRE_UTF8 option. How this affects the pattern matching is mentioned in several places below.

A regular expression is a pattern that is matched against a subject string from left to right. Most characters stand for themselves in a pattern, and match the corresponding characters in the subject. As a trivial example, the pattern

  The quick brown fox

matches a portion of a subject string that is identical to itself. The power of regular expressions comes from the ability to include alternatives and repetitions in the pattern. These are encoded in the pattern by the use of meta-characters, which do not stand for themselves but instead are interpreted in some special way.

There are two different sets of meta-characters: those that are recognized anywhere in the pattern except within square brackets, and those that are recognized in square brackets. Outside square brackets, the meta-characters are as follows:

  \      general escape character with several uses

  ^      assert start of string (or line, in multiline mode)

  $      assert end of string (or line, in multiline mode)

  .      match any character except newline (by default)

  [      start character class definition

  |      start of alternative branch

  (      start subpattern

  )      end subpattern

  ?      extends the meaning of (

         also 0 or 1 quantifier

         also quantifier minimizer

  *      0 or more quantifier

  +      1 or more quantifier

         also "possessive quantifier"

  {      start min/max quantifier

Part of a pattern that is in square brackets is called a "character class". In a character class the only meta-characters are:

  \      general escape character

  ^      negate the class, but only if the first character

  -      indicates character range

  [      POSIX character class (only if followed by POSIX

           syntax)

  ]      terminates the character class

The following sections describe the use of each of the meta-characters.

BACKSLASH

The backslash character has several uses. Firstly, if it is followed by a non-alphameric character, it takes away any special meaning that character may have. This use of backslash as an escape character applies both inside and outside character classes.

For example, if you want to match a * character, you write \* in the pattern. This escaping action applies whether or not the following character would otherwise be interpreted as a meta-character, so it is always safe to precede a non-alphameric with backslash to specify that it stands for itself. In particular, if you want to match a backslash, you write \\.

If a pattern is compiled with the PCRE_EXTENDED option, whitespace in the pattern (other than in a character class) and characters between a # outside a character class and the next newline character are ignored. An escaping backslash can be used to include a whitespace or # character as part of the pattern.

If you want to remove the special meaning from a sequence of characters, you can do so by putting them between \Q and \E. This is different from Perl in that $ and @ are handled as literals in \Q...\E sequences in PCRE, whereas in Perl, $ and @ cause variable interpolation. Note the following examples:

  Pattern            PCRE matches   Perl matches

  \Qabc$xyz\E        abc$xyz        abc followed by the

                                      contents of $xyz

  \Qabc\$xyz\E       abc\$xyz       abc\$xyz

  \Qabc\E\$\Qxyz\E   abc$xyz        abc$xyz

The \Q...\E sequence is recognized both inside and outside character classes.

A second use of backslash provides a way of encoding non-printing characters in patterns in a visible manner. There is no restriction on the appearance of non-printing characters, apart from the binary zero that terminates a pattern, but when a pattern is being prepared by text editing, it is usually easier to use one of the following escape sequences than the binary character it represents:

  \a        alarm, that is, the BEL character (hex 07)

  \cx       "control-x", where x is any character

  \e        escape (hex 1B)

  \f        formfeed (hex 0C)

  \n        newline (hex 0A)

  \r        carriage return (hex 0D)

  \t        tab (hex 09)

  \ddd      character with octal code ddd, or backreference

  \xhh      character with hex code hh

  \x{hhh..} character with hex code hhh... (UTF-8 mode only)

The precise effect of \cx is as follows: if x is a lower case letter, it is converted to upper case. Then bit 6 of the character (hex 40) is inverted. Thus \cz becomes hex 1A, but \c{ becomes hex 3B, while \c; becomes hex 7B.

After \x, from zero to two hexadecimal digits are read (letters can be in upper or lower case). In UTF-8 mode, any number of hexadecimal digits may appear between \x{ and }, but the value of the character code must be less than 2**31 (that is, the maximum hexadecimal value is 7FFFFFFF). If characters other than hexadecimal digits appear between \x{ and }, or if there is no terminating }, this form of escape is not recognized. Instead, the initial \x will be interpreted as a basic hexadecimal escape, with no following digits, giving a byte whose value is zero.

Characters whose value is less than 256 can be defined by either of the two syntaxes for \x when PCRE is in UTF-8 mode. There is no difference in the way they are handled. For example, \xdc is exactly the same as \x{dc}.

After \0 up to two further octal digits are read. In both cases, if there are fewer than two digits, just those that are present are used. Thus the sequence \0\x\07 specifies two binary zeros followed by a BEL character (code value 7). Make sure you supply two digits after the initial zero if the character that follows is itself an octal digit.

The handling of a backslash followed by a digit other than 0 is complicated. Outside a character class, PCRE reads it and any following digits as a decimal number. If the number is less than 10, or if there have been at least that many previous capturing left parentheses in the expression, the entire sequence is taken as a back reference. A description of how this works is given later, following the discussion of parenthesized subpatterns.

Inside a character class, or if the decimal number is greater than 9 and there have not been that many capturing subpatterns, PCRE re-reads up to three octal digits following the backslash, and generates a single byte from the least significant 8 bits of the value. Any subsequent digits stand for themselves. For example:

  \040   is another way of writing a space

  \40    is the same, provided there are fewer than 40

            previous capturing subpatterns

  \7     is always a back reference

  \11    might be a back reference, or another way of

            writing a tab

  \011   is always a tab

  \0113  is a tab followed by the character "3"

  \113   might be a back reference, otherwise the

            character with octal code 113

  \377   might be a back reference, otherwise

            the byte consisting entirely of 1 bits

  \81    is either a back reference, or a binary zero

            followed by the two characters "8" and "1"

Note that octal values of 100 or greater must not be introduced by a leading zero, because no more than three octal digits are ever read.

All the sequences that define a single byte value or a single UTF-8 character (in UTF-8 mode) can be used both inside and outside character classes. In addition, inside a character class, the sequence \b is interpreted as the backspace character (hex 08). Outside a character class it has a different meaning (see below).

The third use of backslash is for specifying generic character types:

  \d     any decimal digit

  \D     any character that is not a decimal digit

  \s     any whitespace character

  \S     any character that is not a whitespace character

  \w     any "word" character

  \W     any "non-word" character

Each pair of escape sequences partitions the complete set of characters into two disjoint sets. Any given character matches one, and only one, of each pair.

In UTF-8 mode, characters with values greater than 255 never match \d, \s, or \w, and always match \D, \S, and \W.

For compatibility with Perl, \s does not match the VT character (code 11). This makes it different from the the POSIX "space" class. The \s characters are HT (9), LF (10), FF (12), CR (13), and space (32).

A "word" character is any letter or digit or the underscore character, that is, any character which can be part of a Perl "word". The definition of letters and digits is controlled by PCRE's character tables, and may vary if locale- specific matching is taking place (see "Locale support" in the pcreapi page). For example, in the "fr" (French) locale, some character codes greater than 128 are used for accented letters, and these are matched by \w.

These character type sequences can appear both inside and outside character classes. They each match one character of the appropriate type. If the current matching point is at the end of the subject string, all of them fail, since there is no character to match.

The fourth use of backslash is for certain simple assertions. An assertion specifies a condition that has to be met at a particular point in a match, without consuming any characters from the subject string. The use of subpatterns for more complicated assertions is described below. The backslashed assertions are

  \b     matches at a word boundary

  \B     matches when not at a word boundary

  \A     matches at start of subject

  \Z     matches at end of subject or before newline at end

  \z     matches at end of subject

  \G     matches at first matching position in subject

These assertions may not appear in character classes (but note that \b has a different meaning, namely the backspace character, inside a character class).

A word boundary is a position in the subject string where the current character and the previous character do not both match \w or \W (i.e. one matches \w and the other matches \W), or the start or end of the string if the first or last character matches \w, respectively.

The \A, \Z, and \z assertions differ from the traditional circumflex and dollar (described below) in that they only ever match at the very start and end of the subject string, whatever options are set. Thus, they are independent of multiline mode.

They are not affected by the PCRE_NOTBOL or PCRE_NOTEOL options. If the startoffset argument of pcre_exec() is non-zero, indicating that matching is to start at a point other than the beginning of the subject, \A can never match. The difference between \Z and \z is that \Z matches before a newline that is the last character of the string as well as at the end of the string, whereas \z matches only at the end.

The \G assertion is true only when the current matching position is at the start point of the match, as specified by the startoffset argument of pcre_exec(). It differs from \A when the value of startoffset is non-zero. By calling pcre_exec() multiple times with appropriate arguments, you can mimic Perl's /g option, and it is in this kind of implementation where \G can be useful.

Note, however, that PCRE's interpretation of \G, as the start of the current match, is subtly different from Perl's, which defines it as the end of the previous match. In Perl, these can be different when the previously matched string was empty. Because PCRE does just one match at a time, it cannot reproduce this behaviour.

If all the alternatives of a pattern begin with \G, the expression is anchored to the starting match position, and the "anchored" flag is set in the compiled regular expression.

CIRCUMFLEX AND DOLLAR

Outside a character class, in the default matching mode, the circumflex character is an assertion which is true only if the current matching point is at the start of the subject string. If the startoffset argument of pcre_exec() is non-zero, circumflex can never match if the PCRE_MULTILINE option is unset. Inside a character class, circumflex has an entirely different meaning (see below).

Circumflex need not be the first character of the pattern if a number of alternatives are involved, but it should be the first thing in each alternative in which it appears if the pattern is ever to match that branch. If all possible alternatives start with a circumflex, that is, if the pattern is constrained to match only at the start of the subject, it is said to be an "anchored" pattern. (There are also other constructs that can cause a pattern to be anchored.)

A dollar character is an assertion which is true only if the current matching point is at the end of the subject string, or immediately before a newline character that is the last character in the string (by default). Dollar need not be the last character of the pattern if a number of alternatives are involved, but it should be the last item in any branch in which it appears. Dollar has no special meaning in a character class.

The meaning of dollar can be changed so that it matches only at the very end of the string, by setting the PCRE_DOLLAR_ENDONLY option at compile time. This does not affect the \Z assertion.

The meanings of the circumflex and dollar characters are changed if the PCRE_MULTILINE option is set. When this is the case, they match immediately after and immediately before an internal newline character, respectively, in addition to matching at the start and end of the subject string. For example, the pattern /^abc$/ matches the subject string "def\nabc" in multiline mode, but not otherwise. Consequently, patterns that are anchored in single line mode because all branches start with ^ are not anchored in multiline mode, and a match for circumflex is possible when the startoffset argument of pcre_exec() is non-zero. The PCRE_DOLLAR_ENDONLY option is ignored if PCRE_MULTILINE is set.

Note that the sequences \A, \Z, and \z can be used to match the start and end of the subject in both modes, and if all branches of a pattern start with \A it is always anchored, whether PCRE_MULTILINE is set or not.

FULL STOP (PERIOD, DOT)

Outside a character class, a dot in the pattern matches any one character in the subject, including a non-printing character, but not (by default) newline. In UTF-8 mode, a dot matches any UTF-8 character, which might be more than one byte long, except (by default) for newline. If the PCRE_DOTALL option is set, dots match newlines as well. The handling of dot is entirely independent of the handling of circumflex and dollar, the only relationship being that they both involve newline characters. Dot has no special meaning in a character class.

MATCHING A SINGLE BYTE

Outside a character class, the escape sequence \C matches any one byte, both in and out of UTF-8 mode. Unlike a dot, it always matches a newline. The feature is provided in Perl in order to match individual bytes in UTF-8 mode. Because it breaks up UTF-8 characters into individual bytes, what remains in the string may be a malformed UTF-8 string. For this reason it is best avoided.

PCRE does not allow \C to appear in lookbehind assertions (see below), because in UTF-8 mode it makes it impossible to calculate the length of the lookbehind.

SQUARE BRACKETS

An opening square bracket introduces a character class, terminated by a closing square bracket. A closing square bracket on its own is not special. If a closing square bracket is required as a member of the class, it should be the first data character in the class (after an initial circumflex, if present) or escaped with a backslash.

A character class matches a single character in the subject. In UTF-8 mode, the character may occupy more than one byte. A matched character must be in the set of characters defined by the class, unless the first character in the class definition is a circumflex, in which case the subject character must not be in the set defined by the class. If a circumflex is actually required as a member of the class, ensure it is not the first character, or escape it with a backslash.

For example, the character class [aeiou] matches any lower case vowel, while [^aeiou] matches any character that is not a lower case vowel. Note that a circumflex is just a convenient notation for specifying the characters which are in the class by enumerating those that are not. It is not an assertion: it still consumes a character from the subject string, and fails if the current pointer is at the end of the string.

In UTF-8 mode, characters with values greater than 255 can be included in a class as a literal string of bytes, or by using the \x{ escaping mechanism.

When caseless matching is set, any letters in a class represent both their upper case and lower case versions, so for example, a caseless [aeiou] matches "A" as well as "a", and a caseless [^aeiou] does not match "A", whereas a caseful version would. PCRE does not support the concept of case for characters with values greater than 255.

The newline character is never treated in any special way in character classes, whatever the setting of the PCRE_DOTALL or PCRE_MULTILINE options is. A class such as [^a] will always match a newline.

The minus (hyphen) character can be used to specify a range of characters in a character class. For example, [d-m] matches any letter between d and m, inclusive. If a minus character is required in a class, it must be escaped with a backslash or appear in a position where it cannot be interpreted as indicating a range, typically as the first or last character in the class.

It is not possible to have the literal character "]" as the end character of a range. A pattern such as [W-]46] is interpreted as a class of two characters ("W" and "-") followed by a literal string "46]", so it would match "W46]" or "-46]". However, if the "]" is escaped with a backslash it is interpreted as the end of range, so [W-\]46] is interpreted as a single class containing a range followed by two separate characters. The octal or hexadecimal representation of "]" can also be used to end a range.

Ranges operate in the collating sequence of character values. They can also be used for characters specified numerically, for example [\000-\037]. In UTF-8 mode, ranges can include characters whose values are greater than 255, for example [\x{100}-\x{2ff}].

If a range that includes letters is used when caseless matching is set, it matches the letters in either case. For example, [W-c] is equivalent to [][\^_`wxyzabc], matched caselessly, and if character tables for the "fr" locale are in use, [\xc8-\xcb] matches accented E characters in both cases.

The character types \d, \D, \s, \S, \w, and \W may also appear in a character class, and add the characters that they match to the class. For example, [\dABCDEF] matches any hexadecimal digit. A circumflex can conveniently be used with the upper case character types to specify a more restricted set of characters than the matching lower case type. For example, the class [^\W_] matches any letter or digit, but not underscore.

All non-alphameric characters other than \, -, ^ (at the start) and the terminating ] are non-special in character classes, but it does no harm if they are escaped.

POSIX CHARACTER CLASSES

Perl supports the POSIX notation for character classes, which uses names enclosed by [: and :] within the enclosing square brackets. PCRE also supports this notation. For example,

  [01[:alpha:]%]

matches "0", "1", any alphabetic character, or "%". The supported class names are

  alnum    letters and digits

  alpha    letters

  ascii    character codes 0 - 127

  blank    space or tab only

  cntrl    control characters

  digit    decimal digits (same as \d)

  graph    printing characters, excluding space

  lower    lower case letters

  print    printing characters, including space

  punct    printing characters, excluding letters and digits

  space    white space (not quite the same as \s)

  upper    upper case letters

  word     "word" characters (same as \w)

  xdigit   hexadecimal digits

The "space" characters are HT (9), LF (10), VT (11), FF (12), CR (13), and space (32). Notice that this list includes the VT character (code 11). This makes "space" different to \s, which does not include VT (for Perl compatibility).

The name "word" is a Perl extension, and "blank" is a GNU extension from Perl 5.8. Another Perl extension is negation, which is indicated by a ^ character after the colon. For example,

  [12[:^digit:]]

matches "1", "2", or any non-digit. PCRE (and Perl) also recognize the POSIX syntax [.ch.] and [=ch=] where "ch" is a "collating element", but these are not supported, and an error is given if they are encountered.

In UTF-8 mode, characters with values greater than 255 do not match any of the POSIX character classes.

VERTICAL BAR

Vertical bar characters are used to separate alternative patterns. For example, the pattern

  gilbert|sullivan

matches either "gilbert" or "sullivan". Any number of alternatives may appear, and an empty alternative is permitted (matching the empty string). The matching process tries each alternative in turn, from left to right, and the first one that succeeds is used. If the alternatives are within a subpattern (defined below), "succeeds" means matching the rest of the main pattern as well as the alternative in the subpattern.

INTERNAL OPTION SETTING

The settings of the PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and PCRE_EXTENDED options can be changed from within the pattern by a sequence of Perl option letters enclosed between "(?" and ")". The option letters are

  i  for PCRE_CASELESS

  m  for PCRE_MULTILINE

  s  for PCRE_DOTALL

  x  for PCRE_EXTENDED

For example, (?im) sets caseless, multiline matching. It is also possible to unset these options by preceding the letter with a hyphen, and a combined setting and unsetting such as (?im-sx), which sets PCRE_CASELESS and PCRE_MULTILINE while unsetting PCRE_DOTALL and PCRE_EXTENDED, is also permitted. If a letter appears both before and after the hyphen, the option is unset.

When an option change occurs at top level (that is, not inside subpattern parentheses), the change applies to the remainder of the pattern that follows. If the change is placed right at the start of a pattern, PCRE extracts it into the global options (and it will therefore show up in data extracted by the pcre_fullinfo() function).

An option change within a subpattern affects only that part of the current pattern that follows it, so

  (a(?i)b)c

matches abc and aBc and no other strings (assuming PCRE_CASELESS is not used). By this means, options can be made to have different settings in different parts of the pattern. Any changes made in one alternative do carry on into subsequent branches within the same subpattern. For example,

  (a(?i)b|c)

matches "ab", "aB", "c", and "C", even though when matching "C" the first branch is abandoned before the option setting. This is because the effects of option settings happen at compile time. There would be some very weird behaviour otherwise.

The PCRE-specific options PCRE_UNGREEDY and PCRE_EXTRA can be changed in the same way as the Perl-compatible options by using the characters U and X respectively. The (?X) flag setting is special in that it must always occur earlier in the pattern than any of the additional features it turns on, even when it is at top level. It is best put at the start.

SUBPATTERNS

Subpatterns are delimited by parentheses (round brackets), which can be nested. Marking part of a pattern as a subpattern does two things:

1. It localizes a set of alternatives. For example, the pattern

  cat(aract|erpillar|)

matches one of the words "cat", "cataract", or "caterpillar". Without the parentheses, it would match "cataract", "erpillar" or the empty string.

2. It sets up the subpattern as a capturing subpattern (as defined above). When the whole pattern matches, that portion of the subject string that matched the subpattern is passed back to the caller via the ovector argument of pcre_exec(). Opening parentheses are counted from left to right (starting from 1) to obtain the numbers of the capturing subpatterns.

For example, if the string "the red king" is matched against the pattern

  the ((red|white) (king|queen))

the captured substrings are "red king", "red", and "king", and are numbered 1, 2, and 3, respectively.

The fact that plain parentheses fulfil two functions is not always helpful. There are often times when a grouping subpattern is required without a capturing requirement. If an opening parenthesis is followed by a question mark and a colon, the subpattern does not do any capturing, and is not counted when computing the number of any subsequent capturing subpatterns. For example, if the string "the white queen" is matched against the pattern

  the ((?:red|white) (king|queen))

the captured substrings are "white queen" and "queen", and are numbered 1 and 2. The maximum number of capturing subpatterns is 65535, and the maximum depth of nesting of all subpatterns, both capturing and non-capturing, is 200.

As a convenient shorthand, if any option settings are required at the start of a non-capturing subpattern, the option letters may appear between the "?" and the ":". Thus the two patterns

  (?i:saturday|sunday)

  (?:(?i)saturday|sunday)

match exactly the same set of strings. Because alternative branches are tried from left to right, and options are not reset until the end of the subpattern is reached, an option setting in one branch does affect subsequent branches, so the above patterns match "SUNDAY" as well as "Saturday".

NAMED SUBPATTERNS

Identifying capturing parentheses by number is simple, but it can be very hard to keep track of the numbers in complicated regular expressions. Furthermore, if an expression is modified, the numbers may change. To help with the difficulty, PCRE supports the naming of subpatterns, something that Perl does not provide. The Python syntax (?P<name>...) is used. Names consist of alphanumeric characters and underscores, and must be unique within a pattern.

Named capturing parentheses are still allocated numbers as well as names. The PCRE API provides function calls for extracting the name-to-number translation table from a compiled pattern. For further details see the pcreapi documentation.

REPETITION

Repetition is specified by quantifiers, which can follow any of the following items:

  a literal data character

  the . metacharacter

  the \C escape sequence

  escapes such as \d that match single characters

  a character class

  a back reference (see next section)

  a parenthesized subpattern (unless it is an assertion)

The general repetition quantifier specifies a minimum and maximum number of permitted matches, by giving the two numbers in curly brackets (braces), separated by a comma. The numbers must be less than 65536, and the first must be less than or equal to the second. For example:

  z{2,4}

matches "zz", "zzz", or "zzzz". A closing brace on its own is not a special character. If the second number is omitted, but the comma is present, there is no upper limit; if the second number and the comma are both omitted, the quantifier specifies an exact number of required matches. Thus

  [aeiou]{3,}

matches at least 3 successive vowels, but may match many more, while

  \d{8}

matches exactly 8 digits. An opening curly bracket that appears in a position where a quantifier is not allowed, or one that does not match the syntax of a quantifier, is taken as a literal character. For example, {,6} is not a quantifier, but a literal string of four characters.

In UTF-8 mode, quantifiers apply to UTF-8 characters rather than to individual bytes. Thus, for example, \x{100}{2} matches two UTF-8 characters, each of which is represented by a two-byte sequence.

The quantifier {0} is permitted, causing the expression to behave as if the previous item and the quantifier were not present.

For convenience (and historical compatibility) the three most common quantifiers have single-character abbreviations:

  *    is equivalent to {0,}

  +    is equivalent to {1,}

  ?    is equivalent to {0,1}

It is possible to construct infinite loops by following a subpattern that can match no characters with a quantifier that has no upper limit, for example:

  (a?)*

Earlier versions of Perl and PCRE used to give an error at compile time for such patterns. However, because there are cases where this can be useful, such patterns are now accepted, but if any repetition of the subpattern does in fact match no characters, the loop is forcibly broken.

By default, the quantifiers are "greedy", that is, they match as much as possible (up to the maximum number of permitted times), without causing the rest of the pattern to fail. The classic example of where this gives problems is in trying to match comments in C programs. These appear between the sequences /* and */ and within the sequence, individual * and / characters may appear. An attempt to match C comments by applying the pattern

  /\*.*\*/

to the string

  /* first command */  not comment  /* second comment */

fails, because it matches the entire string owing to the greediness of the .* item.

However, if a quantifier is followed by a question mark, it ceases to be greedy, and instead matches the minimum number of times possible, so the pattern

  /\*.*?\*/

does the right thing with the C comments. The meaning of the various quantifiers is not otherwise changed, just the preferred number of matches. Do not confuse this use of question mark with its use as a quantifier in its own right. Because it has two uses, it can sometimes appear doubled, as in

  \d??\d

which matches one digit by preference, but can match two if that is the only way the rest of the pattern matches.

If the PCRE_UNGREEDY option is set (an option which is not available in Perl), the quantifiers are not greedy by default, but individual ones can be made greedy by following them with a question mark. In other words, it inverts the default behaviour.

When a parenthesized subpattern is quantified with a minimum repeat count that is greater than 1 or with a limited maximum, more store is required for the compiled pattern, in proportion to the size of the minimum or maximum.

If a pattern starts with .* or .{0,} and the PCRE_DOTALL option (equivalent to Perl's /s) is set, thus allowing the . to match newlines, the pattern is implicitly anchored, because whatever follows will be tried against every character position in the subject string, so there is no point in retrying the overall match at any position after the first. PCRE normally treats such a pattern as though it were preceded by \A.

In cases where it is known that the subject string contains no newlines, it is worth setting PCRE_DOTALL in order to obtain this optimization, or alternatively using ^ to indicate anchoring explicitly.

However, there is one situation where the optimization cannot be used. When .* is inside capturing parentheses that are the subject of a backreference elsewhere in the pattern, a match at the start may fail, and a later one succeed. Consider, for example:

  (.*)abc\1

If the subject is "xyz123abc123" the match point is the fourth character. For this reason, such a pattern is not implicitly anchored.

When a capturing subpattern is repeated, the value captured is the substring that matched the final iteration. For example, after

  (tweedle[dume]{3}\s*)+

has matched "tweedledum tweedledee" the value of the captured substring is "tweedledee". However, if there are nested capturing subpatterns, the corresponding captured values may have been set in previous iterations. For example, after

  /(a|(b))+/

matches "aba" the value of the second captured substring is "b".

ATOMIC GROUPING AND POSSESSIVE QUANTIFIERS

With both maximizing and minimizing repetition, failure of what follows normally causes the repeated item to be re-evaluated to see if a different number of repeats allows the rest of the pattern to match. Sometimes it is useful to prevent this, either to change the nature of the match, or to cause it fail earlier than it otherwise might, when the author of the pattern knows there is no point in carrying on.

Consider, for example, the pattern \d+foo when applied to the subject line

  123456bar

After matching all 6 digits and then failing to match "foo", the normal action of the matcher is to try again with only 5 digits matching the \d+ item, and then with 4, and so on, before ultimately failing. "Atomic grouping" (a term taken from Jeffrey Friedl's book) provides the means for specifying that once a subpattern has matched, it is not to be re-evaluated in this way.

If we use atomic grouping for the previous example, the matcher would give up immediately on failing to match "foo" the first time. The notation is a kind of special parenthesis, starting with (?> as in this example:

  (?>\d+)bar

This kind of parenthesis "locks up" the part of the pattern it contains once it has matched, and a failure further into the pattern is prevented from backtracking into it. Backtracking past it to previous items, however, works as normal.

An alternative description is that a subpattern of this type matches the string of characters that an identical standalone pattern would match, if anchored at the current point in the subject string.

Atomic grouping subpatterns are not capturing subpatterns. Simple cases such as the above example can be thought of as a maximizing repeat that must swallow everything it can. So, while both \d+ and \d+? are prepared to adjust the number of digits they match in order to make the rest of the pattern match, (?>\d+) can only match an entire sequence of digits.

Atomic groups in general can of course contain arbitrarily complicated subpatterns, and can be nested. However, when the subpattern for an atomic group is just a single repeated item, as in the example above, a simpler notation, called a "possessive quantifier" can be used. This consists of an additional + character following a quantifier. Using this notation, the previous example can be rewritten as

  \d++bar

Possessive quantifiers are always greedy; the setting of the PCRE_UNGREEDY option is ignored. They are a convenient notation for the simpler forms of atomic group. However, there is no difference in the meaning or processing of a possessive quantifier and the equivalent atomic group.

The possessive quantifier syntax is an extension to the Perl syntax. It originates in Sun's Java package.

When a pattern contains an unlimited repeat inside a subpattern that can itself be repeated an unlimited number of times, the use of an atomic group is the only way to avoid some failing matches taking a very long time indeed. The pattern

  (\D+|<\d+>)*[!?]

matches an unlimited number of substrings that either consist of non-digits, or digits enclosed in <>, followed by either ! or ?. When it matches, it runs quickly. However, if it is applied to

  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

it takes a long time before reporting failure. This is because the string can be divided between the two repeats in a large number of ways, and all have to be tried. (The example used [!?] rather than a single character at the end, because both PCRE and Perl have an optimization that allows for fast failure when a single character is used. They remember the last single character that is required for a match, and fail early if it is not present in the string.) If the pattern is changed to

  ((?>\D+)|<\d+>)*[!?]

sequences of non-digits cannot be broken, and failure happens quickly.

BACK REFERENCES

Outside a character class, a backslash followed by a digit greater than 0 (and possibly further digits) is a back reference to a capturing subpattern earlier (that is, to its left) in the pattern, provided there have been that many previous capturing left parentheses.

However, if the decimal number following the backslash is less than 10, it is always taken as a back reference, and causes an error only if there are not that many capturing left parentheses in the entire pattern. In other words, the parentheses that are referenced need not be to the left of the reference for numbers less than 10. See the section entitled "Backslash" above for further details of the handling of digits following a backslash.

A back reference matches whatever actually matched the capturing subpattern in the current subject string, rather than anything matching the subpattern itself (see "Subpatterns as subroutines" below for a way of doing that). So the pattern

  (sens|respons)e and \1ibility

matches "sense and sensibility" and "response and responsibility", but not "sense and responsibility". If caseful matching is in force at the time of the back reference, the case of letters is relevant. For example,

  ((?i)rah)\s+\1

matches "rah rah" and "RAH RAH", but not "RAH rah", even though the original capturing subpattern is matched caselessly.

Back references to named subpatterns use the Python syntax (?P=name). We could rewrite the above example as follows:

  (?<p1>(?i)rah)\s+(?P=p1)

There may be more than one back reference to the same subpattern. If a subpattern has not actually been used in a particular match, any back references to it always fail. For example, the pattern

  (a|(bc))\2

always fails if it starts to match "a" rather than "bc". Because there may be many capturing parentheses in a pattern, all digits following the backslash are taken as part of a potential back reference number. If the pattern continues with a digit character, some delimiter must be used to terminate the back reference. If the PCRE_EXTENDED option is set, this can be whitespace. Otherwise an empty comment can be used.

A back reference that occurs inside the parentheses to which it refers fails when the subpattern is first used, so, for example, (a\1) never matches. However, such references can be useful inside repeated subpatterns. For example, the pattern

  (a|b\1)+

matches any number of "a"s and also "aba", "ababbaa" etc. At each iteration of the subpattern, the back reference matches the character string corresponding to the previous iteration. In order for this to work, the pattern must be such that the first iteration does not need to match the back reference. This can be done using alternation, as in the example above, or by a quantifier with a minimum of zero.

ASSERTIONS

An assertion is a test on the characters following or preceding the current matching point that does not actually consume any characters. The simple assertions coded as \b, \B, \A, \G, \Z, \z, ^ and $ are described above. More complicated assertions are coded as subpatterns. There are two kinds: those that look ahead of the current position in the subject string, and those that look behind it.

An assertion subpattern is matched in the normal way, except that it does not cause the current matching position to be changed. Lookahead assertions start with (?= for positive assertions and (?! for negative assertions. For example,

  \w+(?=;)

matches a word followed by a semicolon, but does not include the semicolon in the match, and

  foo(?!bar)

matches any occurrence of "foo" that is not followed by "bar". Note that the apparently similar pattern

  (?!foo)bar

does not find an occurrence of "bar" that is preceded by something other than "foo"; it finds any occurrence of "bar" whatsoever, because the assertion (?!foo) is always true when the next three characters are "bar". A lookbehind assertion is needed to achieve this effect.

If you want to force a matching failure at some point in a pattern, the most convenient way to do it is with (?!) because an empty string always matches, so an assertion that requires there not to be an empty string must always fail.

Lookbehind assertions start with (?<= for positive assertions and (?<! for negative assertions. For example,

  (?<!foo)bar

does find an occurrence of "bar" that is not preceded by "foo". The contents of a lookbehind assertion are restricted such that all the strings it matches must have a fixed length. However, if there are several alternatives, they do not all have to have the same fixed length. Thus

  (?<=bullock|donkey)

is permitted, but

  (?<!dogs?|cats?)

causes an error at compile time. Branches that match different length strings are permitted only at the top level of a lookbehind assertion. This is an extension compared with Perl (at least for 5.8), which requires all branches to match the same length of string. An assertion such as

  (?<=ab(c|de))

is not permitted, because its single top-level branch can match two different lengths, but it is acceptable if rewritten to use two top-level branches:

  (?<=abc|abde)

The implementation of lookbehind assertions is, for each alternative, to temporarily move the current position back by the fixed width and then try to match. If there are insufficient characters before the current position, the match is deemed to fail.

PCRE does not allow the \C escape (which matches a single byte in UTF-8 mode) to appear in lookbehind assertions, because it makes it impossible to calculate the length of the lookbehind.

Atomic groups can be used in conjunction with lookbehind assertions to specify efficient matching at the end of the subject string. Consider a simple pattern such as

  abcd$

when applied to a long string that does not match. Because matching proceeds from left to right, PCRE will look for each "a" in the subject and then see if what follows matches the rest of the pattern. If the pattern is specified as

  ^.*abcd$

the initial .* matches the entire string at first, but when this fails (because there is no following "a"), it backtracks to match all but the last character, then all but the last two characters, and so on. Once again the search for "a" covers the entire string, from right to left, so we are no better off. However, if the pattern is written as

  ^(?>.*)(?<=abcd)

or, equivalently,

  ^.*+(?<=abcd)

there can be no backtracking for the .* item; it can match only the entire string. The subsequent lookbehind assertion does a single test on the last four characters. If it fails, the match fails immediately. For long strings, this approach makes a significant difference to the processing time.

Several assertions (of any sort) may occur in succession. For example,

  (?<=\d{3})(?<!999)foo

matches "foo" preceded by three digits that are not "999". Notice that each of the assertions is applied independently at the same point in the subject string. First there is a check that the previous three characters are all digits, and then there is a check that the same three characters are not "999". This pattern does not match "foo" preceded by six characters, the first of which are digits and the last three of which are not "999". For example, it doesn't match "123abcfoo". A pattern to do that is

  (?<=\d{3}...)(?<!999)foo

This time the first assertion looks at the preceding six characters, checking that the first three are digits, and then the second assertion checks that the preceding three characters are not "999".

Assertions can be nested in any combination. For example,

  (?<=(?<!foo)bar)baz

matches an occurrence of "baz" that is preceded by "bar" which in turn is not preceded by "foo", while

  (?<=\d{3}(?!999)...)foo

is another pattern which matches "foo" preceded by three digits and any three characters that are not "999".

Assertion subpatterns are not capturing subpatterns, and may not be repeated, because it makes no sense to assert the same thing several times. If any kind of assertion contains capturing subpatterns within it, these are counted for the purposes of numbering the capturing subpatterns in the whole pattern. However, substring capturing is carried out only for positive assertions, because it does not make sense for negative assertions.

CONDITIONAL SUBPATTERNS

It is possible to cause the matching process to obey a subpattern conditionally or to choose between two alternative subpatterns, depending on the result of an assertion, or whether a previous capturing subpattern matched or not. The two possible forms of conditional subpattern are

  (?(condition)yes-pattern)

  (?(condition)yes-pattern|no-pattern)

If the condition is satisfied, the yes-pattern is used; otherwise the no-pattern (if present) is used. If there are more than two alternatives in the subpattern, a compile-time error occurs.

There are three kinds of condition. If the text between the parentheses consists of a sequence of digits, the condition is satisfied if the capturing subpattern of that number has previously matched. The number must be greater than zero. Consider the following pattern, which contains non-significant white space to make it more readable (assume the PCRE_EXTENDED option) and to divide it into three parts for ease of discussion:

  ( \( )?    [^()]+    (?(1) \) )

The first part matches an optional opening parenthesis, and if that character is present, sets it as the first captured substring. The second part matches one or more characters that are not parentheses. The third part is a conditional subpattern that tests whether the first set of parentheses matched or not. If they did, that is, if subject started with an opening parenthesis, the condition is true, and so the yes-pattern is executed and a closing parenthesis is required. Otherwise, since no-pattern is not present, the subpattern matches nothing. In other words, this pattern matches a sequence of non-parentheses, optionally enclosed in parentheses.

If the condition is the string (R), it is satisfied if a recursive call to the pattern or subpattern has been made. At "top level", the condition is false. This is a PCRE extension. Recursive patterns are described in the next section.

If the condition is not a sequence of digits or (R), it must be an assertion. This may be a positive or negative lookahead or lookbehind assertion. Consider this pattern, again containing non-significant white space, and with the two alternatives on the second line:

  (?(?=[^a-z]*[a-z])

  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} )

The condition is a positive lookahead assertion that matches an optional sequence of non-letters followed by a letter. In other words, it tests for the presence of at least one letter in the subject. If a letter is found, the subject is matched against the first alternative; otherwise it is matched against the second. This pattern matches strings in one of the two forms dd-aaa-dd or dd-dd-dd, where aaa are letters and dd are digits.

COMMENTS

The sequence (?# marks the start of a comment which continues up to the next closing parenthesis. Nested parentheses are not permitted. The characters that make up a comment play no part in the pattern matching at all.

If the PCRE_EXTENDED option is set, an unescaped # character outside a character class introduces a comment that continues up to the next newline character in the pattern.

RECURSIVE PATTERNS

Consider the problem of matching a string in parentheses, allowing for unlimited nested parentheses. Without the use of recursion, the best that can be done is to use a pattern that matches up to some fixed depth of nesting. It is not possible to handle an arbitrary nesting depth. Perl has provided an experimental facility that allows regular expressions to recurse (amongst other things). It does this by interpolating Perl code in the expression at run time, and the code can refer to the expression itself. A Perl pattern to solve the parentheses problem can be created like this:

  $re = qr{\( (?: (?>[^()]+) | (?p{$re}) )* \)}x;

The (?p{...}) item interpolates Perl code at run time, and in this case refers recursively to the pattern in which it appears. Obviously, PCRE cannot support the interpolation of Perl code. Instead, it supports some special syntax for recursion of the entire pattern, and also for individual subpattern recursion.

The special item that consists of (? followed by a number greater than zero and a closing parenthesis is a recursive call of the subpattern of the given number, provided that it occurs inside that subpattern. (If not, it is a "subroutine" call, which is described in the next section.) The special item (?R) is a recursive call of the entire regular expression.

For example, this PCRE pattern solves the nested parentheses problem (assume the PCRE_EXTENDED option is set so that white space is ignored):

  \( ( (?>[^()]+) | (?R) )* \)

First it matches an opening parenthesis. Then it matches any number of substrings which can either be a sequence of non-parentheses, or a recursive match of the pattern itself (that is a correctly parenthesized substring). Finally there is a closing parenthesis.

If this were part of a larger pattern, you would not want to recurse the entire pattern, so instead you could use this:

  ( \( ( (?>[^()]+) | (?1) )* \) )

We have put the pattern into parentheses, and caused the recursion to refer to them instead of the whole pattern. In a larger pattern, keeping track of parenthesis numbers can be tricky. It may be more convenient to use named parentheses instead. For this, PCRE uses (?P>name), which is an extension to the Python syntax that PCRE uses for named parentheses (Perl does not provide named parentheses). We could rewrite the above example as follows:

  (?<pn> \( ( (?>[^()]+) | (?P>pn) )* \) )

This particular example pattern contains nested unlimited repeats, and so the use of atomic grouping for matching strings of non-parentheses is important when applying the pattern to strings that do not match. For example, when this pattern is applied to

  (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()

it yields "no match" quickly. However, if atomic grouping is not used, the match runs for a very long time indeed because there are so many different ways the + and * repeats can carve up the subject, and all have to be tested before failure can be reported.

At the end of a match, the values set for any capturing subpatterns are those from the outermost level of the recursion at which the subpattern value is set. If you want to obtain intermediate values, a callout function can be used (see below and the pcrecallout documentation). If the pattern above is matched against

  (ab(cd)ef)

the value for the capturing parentheses is "ef", which is the last value taken on at the top level. If additional parentheses are added, giving

  \( ( ( (?>[^()]+) | (?R) )* ) \)

     ^                        ^

     ^                        ^

the string they capture is "ab(cd)ef", the contents of the top level parentheses. If there are more than 15 capturing parentheses in a pattern, PCRE has to obtain extra memory to store data during a recursion, which it does by using pcre_malloc, freeing it via pcre_free afterwards. If no memory can be obtained, the match fails with the PCRE_ERROR_NOMEMORY error.

Do not confuse the (?R) item with the condition (R), which tests for recursion. Consider this pattern, which matches text in angle brackets, allowing for arbitrary nesting. Only digits are allowed in nested brackets (that is, when recursing), whereas any characters are permitted at the outer level.

  < (?: (?(R) \d++  | [^<>]*+) | (?R)) * >

In this pattern, (?(R) is the start of a conditional subpattern, with two different alternatives for the recursive and non-recursive cases. The (?R) item is the actual recursive call.

SUBPATTERNS AS SUBROUTINES

If the syntax for a recursive subpattern reference (either by number or by name) is used outside the parentheses to which it refers, it operates like a subroutine in a programming language. An earlier example pointed out that the pattern

  (sens|respons)e and \1ibility

matches "sense and sensibility" and "response and responsibility", but not "sense and responsibility". If instead the pattern

  (sens|respons)e and (?1)ibility

is used, it does match "sense and responsibility" as well as the other two strings. Such references must, however, follow the subpattern to which they refer.

CALLOUTS

Perl has a feature whereby using the sequence (?{...}) causes arbitrary Perl code to be obeyed in the middle of matching a regular expression. This makes it possible, amongst other things, to extract different substrings that match the same pair of parentheses when there is a repetition.

PCRE provides a similar feature, but of course it cannot obey arbitrary Perl code. The feature is called "callout". The caller of PCRE provides an external function by putting its entry point in the global variable pcre_callout. By default, this variable contains NULL, which disables all calling out.

Within a regular expression, (?C) indicates the points at which the external function is to be called. If you want to identify different callout points, you can put a number less than 256 after the letter C. The default value is zero. For example, this pattern has two callout points:

  (?C1)\dabc(?C2)def

During matching, when PCRE reaches a callout point (and pcre_callout is set), the external function is called. It is provided with the number of the callout, and, optionally, one item of data originally supplied by the caller of pcre_exec(). The callout function may cause matching to backtrack, or to fail altogether. A complete description of the interface to the callout function is given in the pcrecallout documentation.

Last updated: 03 February 2004

Copyright © 1997-2020 University of Cambridge.

UTF-8 SUPPORT

Starting at release 3.3, PCRE has had some support for character strings encoded in the UTF-8 format. For release 4.0 this has been greatly extended to cover most common requirements.

In order process UTF-8 strings, you must build PCRE to include UTF-8 support in the code, and, in addition, you must call pcre_compile() with the PCRE_UTF8 option flag. When you do this, both the pattern and any subject strings that are matched against it are treated as UTF-8 strings instead of just strings of bytes.

If you compile PCRE with UTF-8 support, but do not use it at run time, the library will be a bit bigger, but the additional run time overhead is limited to testing the PCRE_UTF8 flag in several places, so should not be very large.

The following comments apply when PCRE is running in UTF-8 mode:

1. PCRE assumes that the strings it is given contain valid UTF-8 codes. It does not diagnose invalid UTF-8 strings. If you pass invalid UTF-8 strings to PCRE, the results are undefined.

2. In a pattern, the escape sequence \x{...}, where the contents of the braces is a string of hexadecimal digits, is interpreted as a UTF-8 character whose code number is the given hexadecimal number, for example: \x{1234}. If a non-hexadecimal digit appears between the braces, the item is not recognized. This escape sequence can be used either as a literal, or within a character class.

3. The original hexadecimal escape sequence, \xhh, matches a two-byte UTF-8 character if the value is greater than 127.

4. Repeat quantifiers apply to complete UTF-8 characters, not to individual bytes, for example: \x{100}{3}.

5. The dot metacharacter matches one UTF-8 character instead of a single byte.

6. The escape sequence \C can be used to match a single byte in UTF-8 mode, but its use can lead to some strange effects.

7. The character escapes \b, \B, \d, \D, \s, \S, \w, and \W correctly test characters of any code value, but the characters that PCRE recognizes as digits, spaces, or word characters remain the same set as before, all with values less than 256.

8. Case-insensitive matching applies only to characters whose values are less than 256. PCRE does not support the notion of "case" for higher-valued characters.

9. PCRE does not support the use of Unicode tables and properties or the Perl escapes \p, \P, and \X.

DIFFERENCES FROM PERL

This document describes the differences in the ways that PCRE and Perl handle

regular expressions. The differences described here are with respect to Perl

5.8.

1. PCRE does not allow repeat quantifiers on lookahead assertions. Perl

permits them, but they do not mean what you might think. For example, (?!a){3}

does not assert that the next three characters are not "

a"

. It just asserts that

the next character is not "

a"

three times.

2. Capturing subpatterns that occur inside negative lookahead assertions are

counted, but their entries in the offsets vector are never set. Perl sets its

numerical variables from any such patterns that are matched before the assertion

fails to match something (thereby succeeding), but only if the negative

lookahead assertion contains just one branch.

3. Though binary zero characters are supported in the subject string, they

are not allowed in a pattern string because it is passed as a normal C string,

terminated by zero. The escape sequence "

\0"

can be used in the pattern to

represent a binary zero.

4. The following Perl escape sequences are not supported: \l, \u, \L, \U, \P,

\p, \N, and \X. In fact these are implemented by Perl's general string-handling

and are not part of its pattern matching engine. If any of these are encountered

by PCRE, an error is generated.

5. PCRE does support the \Q...\E escape for quoting substrings. Characters in

between are treated as literals. This is slightly different from Perl in that $

and @ are also handled as literals inside the quotes. In Perl, they cause

variable interpolation (but of course PCRE does not have variables). Note the

following examples:

    Pattern            PCRE matches      Perl matches

    \Qabc$xyz\E        abc$xyz           abc followed by the

                                           contents of $xyz

    \Qabc\$xyz\E       abc\$xyz          abc\$xyz

    \Qabc\E\$\Qxyz\E   abc$xyz           abc$xyz

In PCRE, the \Q...\E mechanism is not recognized inside a character class.

8. Fairly obviously, PCRE does not support the (?{code}) and (?p{code}) constructions. However, there is some experimental support for recursive patterns using the non-Perl items (?R), (?number) and (?P>name). Also, the PCRE "callout" feature allows an external function to be called during pattern matching.

9. There are some differences that are concerned with the settings of captured strings when part of a pattern is repeated. For example, matching "aba" against the pattern /^(a(b)?)+$/ in Perl leaves $2 unset, but in PCRE it is set to "b".

10. PCRE provides some extensions to the Perl regular expression facilities:

(a) Although lookbehind assertions must match fixed length strings, each alternative branch of a lookbehind assertion can match a different length of string. Perl requires them all to have the same length.

(b) If PCRE_DOLLAR_ENDONLY is set and PCRE_MULTILINE is not set, the $ meta-character matches only at the very end of the string.

© If PCRE_EXTRA is set, a backslash followed by a letter with no special meaning is faulted.

(d) If PCRE_UNGREEDY is set, the greediness of the repetition quantifiers is inverted, that is, by default they are not greedy, but if followed by a question mark they are.

(e) PCRE_ANCHORED can be used to force a pattern to be tried only at the first matching position in the subject string.

(f) The PCRE_NOTBOL, PCRE_NOTEOL, PCRE_NOTEMPTY, and PCRE_NO_AUTO_CAPTURE options for pcre_exec() have no Perl equivalents.

(g) The (?R), (?number), and (?P>name) constructs allows for recursive pattern matching (Perl can do this using the (?p{code}) construct, which PCRE cannot support.)

(h) PCRE supports named capturing substrings, using the Python syntax.

(i) PCRE supports the possessive quantifier "++" syntax, taken from Sun's Java package.

(j) The (R) condition, for testing recursion, is a PCRE extension.

(k) The callout facility is PCRE-specific.

Last updated: 03 February 2004

Copyright © 1997-2020 University of Cambridge.


System requirements

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

  • Windows 95, 98, ME, NT, 2000, XP, 2003, Vista, 7 and 8 x32/x64 (*)
  • All versions of Microsoft PowerPoint (98, 2000, 2010, XP, 2003, 2010, 2013) or Microsoft Office (98, 2000, 2010, XP, 2003, 2010, 2013) (*)
  • Hard Disk with 6 MB free disk space
  • 128 MB RAM

(*) Please see our website for the latest Windows Operating System information and supported versions of Microsoft Office.


Welcome to PowerPointPipe!

to our newsletter

What is PowerPointPipe?
Features
How can I use PowerPointPipe?
Installation
Online Web Purchase
Purchase Information
Other documentation

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

For new users

PowerPointPipe quickly and easily searches and replaces across thousands of PowerPoint presentations. [more]

To use PowerPointPipe :

  1. Drag and drop your files into PowerPointPipe's window, or use the Files to Process tab to Browse for a folder or List of Files.
  2. On the Actions tab, type in each Find What/Replace With pair, and also where the 'Find What' should be found.
    You can also specify an Excel search/replace list with Unicode text, and generate a list of hyperlinks by clicking the Hyperlink report checkbox.
    Using the Look In location, you can search in hyperlinks, body text, headers and footers, OLE Links and more.
  3. On the Options tab, check backup mode, passwords, and restart control.
  4. Go! Click either the 'Start replacing' or 'Start searching' button at the bottom of the screen.
Remember - just press F1 for help at any time, or choose Index or Contents from the Help Menu.
  • What can I use PowerPointPipe for?
  • How do I buy PowerPointPipe (online)?
  • Frequently Asked Questions and demonstrations (online)

For previous users

  • What's new in this version?

Questions?

Please login to our online user forums, or submit a support request.

See also

Features


Whitespace warning

to our newsletter

Up

Runs successfully on Windows 10, 8, 7, Vista, 2003 and XP.
Server 2012/2008/2003.
x32 and x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

When you click the Search or Replace start buttons, PowerPointPipe first scans the entire list of replacements.

If it finds a search term with spaces or tabs at the start or end it shows a warning.

This is because spaces or tabs around the search string are often not intentional, and leaving them in place usually causes a search to fail.

Unless you know what you are doing we recommend that you remove them.


Check for Updates

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Found in the Help menu, this option lets you check if you have the most up-to-date version. This dialog box is automatically displayed 5 days after the software is first installed.

Unless the Don't ask me again until date is set in the future, the software will check the web for updates every time it is started. If Windows is setup to automatically dial-out if no Internet connection is detected, then checking for updates may cause the Dial-Up dialog to appear.

Check web for updates now

Selecting this radio button and then clicking on Ok results in an access to the DataMystic web site to determine if your software has been superseded. If your copy is out of date, the software will confirm that you wish to download a new version. If so, it will open a web browser at a download page. If you do not wish to download, it will check again in 30 days time.

Don't ask me again until

Selecting this radio button and then setting a date in the calendar drop-down allows you to set a date after which it will again attempt to check for an update. Set this date well in the future if you don't want it to check for updates.

Initially this date is set to 5 days after the software is installed.


Consulting Services

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

DataMystic offers a range of Professional Services to our clients. Our services include:

  • Adding new features to our existing applications
  • Creating new applications
  • Creating customized, one-off solutions based on our existing applications
  • Consulting services to tailor the processing of TextPipe, WordPipe, DataPipe and our other applications
  • Fixing and converting data files
  • Data mining web-based data
  • Fixing junk data in databases
  • Processing emails.

Typical projects that we have been engaged on include

  • Optimizing TextPipe filters for the greatest speed
  • Extracting data from websites to a database import file, or to an Access database
  • Reformatting corporate data to allow import or further manipulation
  • Removal of binary or garbage data from files
  • Writing VBScript/JScript code to perform custom file manipulations.

For more information, please click here.


Images

Home Buy Online FAQ Tasks: Detach Save Delete Restore Compress Unlink Set of Folders TextPipe Upload
Settings: General Incoming Outgoing Manual Scheduled Detach Placeholders Compacting
Subscribe
to our newsletter

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7 and 8 x32/x64

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

Contact Us Support Community (online) FAQ, Tutorials and User Guides (online)


Unattended Installation

Home Contact Consult Other Products Install Check for Updates Corporate Versions Vendor Information

Subscribe
to our newsletter

Home
Contact
Consult
Other Products
Install
Check for Updates
Corporate Versions
Vendor Information

Compatible with Windows 7 OS
Software runs successfully on Windows 98, 2000, XP, 2003, Vista & Windows 7

Support Section

We are here to provide technical support to our customers.

Visit Our Support Section »

For updated information, please see the online version.

We use the InnoSetup installer for the majority of our applications. The installer can be scripted for silent or unattended installation, please see the command line options below:

Note: After purchase, the secure area gives you the option to download a Windows Registry (.reg) file to pre-register your product. To completely automate installations you need to apply this .reg file.

The Setup program accepts optional command line parameters. These can be useful to system administrators, and to other programs calling the Setup program.
/UpdateCheck=0 INSTALLER option to disable update checks made by the APPLICATION. Starting with all releases from May 16, 2012, all new releases support this option.
/Updated INSTALLER option to disable update checks made by the installer. Starting with all releases from May 16, 2012, all new releases support this option.
/SP-
Disables the This will install... Do you wish to continue? prompt at the beginning of Setup. Of course, this will have no effect if the DisableStartupPrompt [Setup] section directive was set to yes.
/SILENT, /VERYSILENT
Instructs Setup to be silent or very silent. When Setup is silent the wizard and the background window are not displayed but the installation progress window is. When a setup is very silent this installation progress window is not displayed. Everything else is normal so for example error messages during installation are displayed and the startup prompt is (if you haven't disabled it with DisableStartupPrompt or the '/SP-' command line option explained above).

If a restart is necessary and the '/NORESTART' command isn't used (see below) and Setup is silent, it will display a Reboot now? message box. If it's very silent it will reboot without asking.

/SUPPRESSMSGBOXES
Instructs Setup to suppress message boxes. Only has an effect when combined with '/SILENT' and '/VERYSILENT'.

The default response in situations where there's a choice is:

  • Yes in a 'Keep newer file?' situation.
  • No in a 'File exists, confirm overwrite.' situation.
  • Abort in Abort/Retry situations.
  • Cancel in Retry/Cancel situations.
  • Yes (=continue) in a DiskSpaceWarning/DirExists/DirDoesntExist/NoUninstallWarning/ExitSetupMessage/ConfirmUninstall situation.
  • Yes (=restart) in a FinishedRestartMessage/UninstalledAndNeedsRestart situation.

5 message boxes are not suppressible:

  • The About Setup message box.
  • The Exit Setup? message box.
  • The FileNotInDir2 message box displayed when Setup requires a new disk to be inserted and the disk was not found.
  • Any (error) message box displayed before Setup (or Uninstall) could read the command line parameters.
  • Any message box displayed by [Code] support function MsgBox.
/LOG
Causes Setup to create a log file in the user's TEMP directory detailing file installation and [Run] actions taken during the installation process. This can be a helpful debugging aid. For example, if you suspect a file isn't being replaced when you believe it should be (or vice versa), the log file will tell you if the file was really skipped, and why.

The log file is created with a unique name based on the current date. (It will not overwrite or append to existing files.)

The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parseable; the format of the file is subject to change without notice.

/LOG="filename"
Same as /LOG, except it allows you to specify a fixed path/filename to use for the log file. If a file with the specified name already exists it will be overwritten. If the file cannot be created, Setup will abort with an error message.
/NOCANCEL
Prevents the user from cancelling during the installation process, by disabling the Cancel button and ignoring clicks on the close button. Useful along with '/SILENT' or '/VERYSILENT'.
/NORESTART
Instructs Setup not to reboot even if it's necessary.
/RESTARTEXITCODE=exit code
Specifies the custom exit code that Setup is to return when a restart is needed. Useful along with '/NORESTART'. Also see Setup Exit Codes.
/LOADINF="filename"
Instructs Setup to load the settings from the specified file after having checked the command line. This file can be prepared using the '/SAVEINF=' command as explained below.

Don't forget to use quotes if the filename contains spaces.

/SAVEINF="filename"
Instructs Setup to save installation settings to the specified file.

Don't forget to use quotes if the filename contains spaces.

/LANG=language
Specifies the language to use. language specifies the internal name of the language as specified in a [Languages] section entry.

When a valid /LANG parameter is used, the Select Language dialog will be suppressed.

/DIR="x:\dirname"
Overrides the default directory name displayed on the Select Destination Location wizard page. A fully qualified pathname must be specified.
/GROUP="folder name"
Overrides the default folder name displayed on the Select Start Menu Folder wizard page. If the [Setup] section directive DisableProgramGroupPage was set to yes, this command line parameter is ignored.
/NOICONS
Instructs Setup to initially check the Don't create a Start Menu folder check box on the Select Start Menu Folder wizard page.
/COMPONENTS="comma separated list of component names"
Overrides the default components settings. Using this command line parameter causes Setup to automatically select a custom type.
/TASKS="comma separated list of task names"
Specifies a list of tasks that should be initially selected or deselected. To deselect a task, prefix its name with a "!" character.

Only the specified tasks (and their children) will be selected; the rest will be deselected. Use the /MERGETASKS parameter instead if you want to keep the default set of tasks and only select/deselect some of them.

Example:
Deselect all tasks, then select the "desktopicon" and "fileassoc" tasks:
/TASKS="desktopicon,fileassoc"
Example:
Deselect all tasks, then select a parent task item, but exclude one of its children:
/TASKS="parent,!parent\child"
/MERGETASKS="comma separated list of task names"
Like the /TASKS parameter, except the specified tasks will be merged with the set of tasks that would have otherwise been selected by default.

If UsePreviousTasks is set to yes, the specified tasks will be selected/deselected after any previous tasks are restored.

Example:
Keep the default set of selected tasks, but additionally select the "desktopicon" and "fileassoc" tasks:
/MERGETASKS="desktopicon,fileassoc"
Example:
Keep the default set of selected tasks, but deselect the "desktopicon" task:
/MERGETASKS="!desktopicon"