0
|
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="""/>
|
|
10 <remove value="\"/>
|
|
11 </valid>
|
|
12 <mapping initial="none">
|
|
13 <add source=""" target="\""/>
|
|
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="""/>
|
|
22 <remove value="\"/>
|
|
23 </valid>
|
|
24 <mapping initial="none">
|
|
25 <add source=""" target="\""/>
|
|
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>
|