Mercurial > repos > kellrott > regex_replace
changeset 0:9a77d5fca67c draft default tip
Uploaded
author | kellrott |
---|---|
date | Mon, 19 Nov 2012 01:04:06 -0500 |
parents | |
children | |
files | regex_replace.xml |
diffstat | 1 files changed, 120 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/regex_replace.xml Mon Nov 19 01:04:06 2012 -0500 @@ -0,0 +1,120 @@ +<tool id="regex_replace" name="Regex Replace" version="1.0.0"> + <description>Regular Expression replacement using the Python re module</description> + <command interpreter="python">$script_file</command> + <inputs> + <param name="infile" type="data" label="Input File"/> + <param name="search_str" type="text" size="70" label="Search String"> + <sanitizer> + <valid initial="string.printable"> + <remove value="""/> + <remove value="\"/> + </valid> + <mapping initial="none"> + <add source=""" target="\""/> + <add source="\" target="\\"/> + </mapping> + </sanitizer> + </param> + <param name="replace_str" type="text" size="70" label="Replace String"> + <sanitizer> + <valid initial="string.printable"> + <remove value="""/> + <remove value="\"/> + </valid> + <mapping initial="none"> + <add source=""" target="\""/> + <add source="\" target="\\"/> + </mapping> + </sanitizer> + </param> + <param name="multiline" type="boolean" label="Multi-line" checked="False"/> + <param name="ignore_case" type="boolean" label="Ignore Case" checked="False"/> + <param name="dot_all" type="boolean" label="Dot All" checked="False"/> + <param name="replace_count" type="integer" label="Replace Count(0=all)" value="0"/> + </inputs> + <outputs> + <data name="outfile" format="txt"/> + </outputs> + <configfiles> + <configfile name="script_file"><![CDATA[#!/usr/bin/env python + +import re + +search_str = """${search_str}""" +replace_str = """${replace_str}""" + +opts = 0 +#if $ignore_case: +opts |= re.IGNORECASE +#end if +#if $multiline: +opts |= re.MULTILINE +#end if +#if $dot_all: +opts |= re.DOTALL +#end if +cmd = re.compile(search_str, opts) + +ihandle = open("""${infile}""") +ohandle = open("""${outfile}""", "w") + +#if $multiline: +itext = ihandle.read() +otext = cmd.sub(replace_str, itext, count=$replace_count ) +ohandle.write(otext) +#else +for line in ihandle: + oline = cmd.sub(replace_str, line, count=$replace_count ) + ohandle.write(oline) +#end if + +ihandle.close() +ohandle.close() + +]]></configfile> + </configfiles> + + <help> +Perform regular expression replacement using the Python re engine. + +Example: +======== + Search String:: + + [^\s]+_(\w+).* + + Replace String:: + + \1 + + On the input file:: + + LJP001_BT20_24H:DMSO + LJP001_BT20_24H:H20 + LJP001_BT20_6H:DMSO + + Outputs:: + + 24H + 24H + 6H + +Additional Options +================== + +Replace Count: + Will define the number of occurrences that can be replaced by the substitution. A count of 0 is equivalent + to 'replace all' + + +Ignore Case: + Make searches case insensitive + +Multi-line: + Do the search across the entire contents of the file. If not checked, then replacements occur line by line + +Dot-All: + With this checked, the '.' in a matching pattern will also match new-line characters. Generally used with 'multi-line' search + + </help> +</tool>