comparison regex_replace.xml @ 0:9a77d5fca67c draft default tip

Uploaded
author kellrott
date Mon, 19 Nov 2012 01:04:06 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:9a77d5fca67c
1 <tool id="regex_replace" name="Regex Replace" version="1.0.0">
2 <description>Regular Expression replacement using the Python re module</description>
3 <command interpreter="python">$script_file</command>
4 <inputs>
5 <param name="infile" type="data" label="Input File"/>
6 <param name="search_str" type="text" size="70" label="Search String">
7 <sanitizer>
8 <valid initial="string.printable">
9 <remove value="&quot;"/>
10 <remove value="\"/>
11 </valid>
12 <mapping initial="none">
13 <add source="&quot;" target="\&quot;"/>
14 <add source="\" target="\\"/>
15 </mapping>
16 </sanitizer>
17 </param>
18 <param name="replace_str" type="text" size="70" label="Replace String">
19 <sanitizer>
20 <valid initial="string.printable">
21 <remove value="&quot;"/>
22 <remove value="\"/>
23 </valid>
24 <mapping initial="none">
25 <add source="&quot;" target="\&quot;"/>
26 <add source="\" target="\\"/>
27 </mapping>
28 </sanitizer>
29 </param>
30 <param name="multiline" type="boolean" label="Multi-line" checked="False"/>
31 <param name="ignore_case" type="boolean" label="Ignore Case" checked="False"/>
32 <param name="dot_all" type="boolean" label="Dot All" checked="False"/>
33 <param name="replace_count" type="integer" label="Replace Count(0=all)" value="0"/>
34 </inputs>
35 <outputs>
36 <data name="outfile" format="txt"/>
37 </outputs>
38 <configfiles>
39 <configfile name="script_file"><![CDATA[#!/usr/bin/env python
40
41 import re
42
43 search_str = """${search_str}"""
44 replace_str = """${replace_str}"""
45
46 opts = 0
47 #if $ignore_case:
48 opts |= re.IGNORECASE
49 #end if
50 #if $multiline:
51 opts |= re.MULTILINE
52 #end if
53 #if $dot_all:
54 opts |= re.DOTALL
55 #end if
56 cmd = re.compile(search_str, opts)
57
58 ihandle = open("""${infile}""")
59 ohandle = open("""${outfile}""", "w")
60
61 #if $multiline:
62 itext = ihandle.read()
63 otext = cmd.sub(replace_str, itext, count=$replace_count )
64 ohandle.write(otext)
65 #else
66 for line in ihandle:
67 oline = cmd.sub(replace_str, line, count=$replace_count )
68 ohandle.write(oline)
69 #end if
70
71 ihandle.close()
72 ohandle.close()
73
74 ]]></configfile>
75 </configfiles>
76
77 <help>
78 Perform regular expression replacement using the Python re engine.
79
80 Example:
81 ========
82 Search String::
83
84 [^\s]+_(\w+).*
85
86 Replace String::
87
88 \1
89
90 On the input file::
91
92 LJP001_BT20_24H:DMSO
93 LJP001_BT20_24H:H20
94 LJP001_BT20_6H:DMSO
95
96 Outputs::
97
98 24H
99 24H
100 6H
101
102 Additional Options
103 ==================
104
105 Replace Count:
106 Will define the number of occurrences that can be replaced by the substitution. A count of 0 is equivalent
107 to 'replace all'
108
109
110 Ignore Case:
111 Make searches case insensitive
112
113 Multi-line:
114 Do the search across the entire contents of the file. If not checked, then replacements occur line by line
115
116 Dot-All:
117 With this checked, the '.' in a matching pattern will also match new-line characters. Generally used with 'multi-line' search
118
119 </help>
120 </tool>