1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429
|
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>sre</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th> <a
href="epytext_example-module.html">Home</a> </th>
<!-- Tree link -->
<th> <a
href="module-tree.html">Trees</a> </th>
<!-- Index link -->
<th> <a
href="identifier-index.html">Indices</a> </th>
<!-- Help link -->
<th> <a
href="help.html">Help</a> </th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
Module sre
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>] | <a href="sre-pysrc.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="sre-module.html">Module sre</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Secret Labs' Regular Expression Engine</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># re-compatible interface for the sre matching engine</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (c) 1998-2001 by Secret Labs AB. All rights reserved.</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This version of the SRE library can be redistributed under CNRI's</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Python 1.6 license. For any other use, please contact Secret Labs</tt> </tt>
<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># AB (info@pythonware.com).</tt> </tt>
<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Portions of this engine have been developed in cooperation with</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># CNRI. Hewlett-Packard provided funding for 1.6 integration and</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># other compatibility work.</tt> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">r"""Support for regular expressions (RE).</tt> </tt>
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">This module provides regular expression matching operations similar to</tt> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">those found in Perl. It supports both 8-bit and Unicode strings; both</tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">the pattern and the strings being processed can contain null bytes and</tt> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">characters outside the US ASCII range.</tt> </tt>
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring">Regular expressions can contain both special and ordinary characters.</tt> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring">Most ordinary characters, like "A", "a", or "0", are the simplest</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring">regular expressions; they simply match themselves. You can</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring">concatenate ordinary characters, so last matches the string 'last'.</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring">The special characters are:</tt> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> "." Matches any character except a newline.</tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> "^" Matches the start of the string.</tt> </tt>
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"> "$" Matches the end of the string.</tt> </tt>
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> "*" Matches 0 or more (greedy) repetitions of the preceding RE.</tt> </tt>
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> Greedy means that it will match as many repetitions as possible.</tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> "+" Matches 1 or more (greedy) repetitions of the preceding RE.</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> "?" Matches 0 or 1 (greedy) of the preceding RE.</tt> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> *?,+?,?? Non-greedy versions of the previous three special characters.</tt> </tt>
<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"> {m,n} Matches from m to n repetitions of the preceding RE.</tt> </tt>
<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> {m,n}? Non-greedy version of the above.</tt> </tt>
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> "\\" Either escapes special characters or signals a special sequence.</tt> </tt>
<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> [] Indicates a set of characters.</tt> </tt>
<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> A "^" as the first character indicates a complementing set.</tt> </tt>
<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> "|" A|B, creates an RE that will match either A or B.</tt> </tt>
<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> (...) Matches the RE inside the parentheses.</tt> </tt>
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> The contents can be retrieved or matched later in the string.</tt> </tt>
<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> (?iLmsux) Set the I, L, M, S, U, or X flag for the RE (see below).</tt> </tt>
<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> (?:...) Non-grouping version of regular parentheses.</tt> </tt>
<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> (?P<name>...) The substring matched by the group is accessible by name.</tt> </tt>
<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> (?P=name) Matches the text matched earlier by the group named name.</tt> </tt>
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> (?#...) A comment; ignored.</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> (?=...) Matches if ... matches next, but doesn't consume the string.</tt> </tt>
<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> (?!...) Matches if ... doesn't match next.</tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring">The special sequences consist of "\\" and a character from the list</tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring">below. If the ordinary character is not on the list, then the</tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring">resulting RE will match the second character.</tt> </tt>
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> \number Matches the contents of the group of the same number.</tt> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> \A Matches only at the start of the string.</tt> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> \Z Matches only at the end of the string.</tt> </tt>
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> \b Matches the empty string, but only at the start or end of a word.</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> \B Matches the empty string, but not at the start or end of a word.</tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> \d Matches any decimal digit; equivalent to the set [0-9].</tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> \D Matches any non-digit character; equivalent to the set [^0-9].</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> \s Matches any whitespace character; equivalent to [ \t\n\r\f\v].</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> \S Matches any non-whitespace character; equiv. to [^ \t\n\r\f\v].</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> \w Matches any alphanumeric character; equivalent to [a-zA-Z0-9_].</tt> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> With LOCALE, it will match the set [0-9_] plus characters defined</tt> </tt>
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> as letters for the current locale.</tt> </tt>
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> \W Matches the complement of \w.</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> \\ Matches a literal backslash.</tt> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring">This module exports the following functions:</tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> match Match a regular expression pattern to the beginning of a string.</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> search Search a string for the presence of a pattern.</tt> </tt>
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> sub Substitute occurrences of a pattern found in a string.</tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> subn Same as sub, but also return the number of substitutions made.</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> split Split a string by the occurrences of a pattern.</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> findall Find all occurrences of a pattern in a string.</tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> compile Compile a pattern into a RegexObject.</tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> purge Clear the regular expression cache.</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> escape Backslash all non-alphanumerics in a string.</tt> </tt>
<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring">Some of the functions in this module takes flags as optional parameters:</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> I IGNORECASE Perform case-insensitive matching.</tt> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> L LOCALE Make \w, \W, \b, \B, dependent on the current locale.</tt> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> M MULTILINE "^" matches the beginning of lines as well as the string.</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> "$" matches the end of lines as well as the string.</tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> S DOTALL "." matches any character at all, including the newline.</tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> X VERBOSE Ignore whitespace and comments for nicer looking RE's.</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> U UNICODE Make \w, \W, \b, \B, dependent on the Unicode locale.</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring">This module also defines an exception 'error'.</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sre_compile</tt> </tt>
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sre_parse</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-comment"># public symbols</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">"match"</tt><tt class="py-op">,</tt> <tt class="py-string">"search"</tt><tt class="py-op">,</tt> <tt class="py-string">"sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"subn"</tt><tt class="py-op">,</tt> <tt class="py-string">"split"</tt><tt class="py-op">,</tt> <tt class="py-string">"findall"</tt><tt class="py-op">,</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-string">"compile"</tt><tt class="py-op">,</tt> <tt class="py-string">"purge"</tt><tt class="py-op">,</tt> <tt class="py-string">"template"</tt><tt class="py-op">,</tt> <tt class="py-string">"escape"</tt><tt class="py-op">,</tt> <tt class="py-string">"I"</tt><tt class="py-op">,</tt> <tt class="py-string">"L"</tt><tt class="py-op">,</tt> <tt class="py-string">"M"</tt><tt class="py-op">,</tt> <tt class="py-string">"S"</tt><tt class="py-op">,</tt> <tt class="py-string">"X"</tt><tt class="py-op">,</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-string">"U"</tt><tt class="py-op">,</tt> <tt class="py-string">"IGNORECASE"</tt><tt class="py-op">,</tt> <tt class="py-string">"LOCALE"</tt><tt class="py-op">,</tt> <tt class="py-string">"MULTILINE"</tt><tt class="py-op">,</tt> <tt class="py-string">"DOTALL"</tt><tt class="py-op">,</tt> <tt class="py-string">"VERBOSE"</tt><tt class="py-op">,</tt> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-string">"UNICODE"</tt><tt class="py-op">,</tt> <tt class="py-string">"error"</tt> <tt class="py-op">]</tt> </tt>
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt>
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">"2.2.1"</tt> </tt>
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt>
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-comment"># flags</tt> </tt>
<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable sre.I=sre-module.html#I"><a title="sre.I" class="py-name" href="#" onclick="return doclink('link-0', 'I', 'link-0');">I</a></tt> <tt class="py-op">=</tt> <tt id="link-1" class="py-name" targets="Variable sre.IGNORECASE=sre-module.html#IGNORECASE"><a title="sre.IGNORECASE" class="py-name" href="#" onclick="return doclink('link-1', 'IGNORECASE', 'link-1');">IGNORECASE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_IGNORECASE</tt> <tt class="py-comment"># ignore case</tt> </tt>
<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable sre.L=sre-module.html#L"><a title="sre.L" class="py-name" href="#" onclick="return doclink('link-2', 'L', 'link-2');">L</a></tt> <tt class="py-op">=</tt> <tt id="link-3" class="py-name" targets="Variable sre.LOCALE=sre-module.html#LOCALE"><a title="sre.LOCALE" class="py-name" href="#" onclick="return doclink('link-3', 'LOCALE', 'link-3');">LOCALE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_LOCALE</tt> <tt class="py-comment"># assume current 8-bit locale</tt> </tt>
<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable sre.U=sre-module.html#U"><a title="sre.U" class="py-name" href="#" onclick="return doclink('link-4', 'U', 'link-4');">U</a></tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name" targets="Variable sre.UNICODE=sre-module.html#UNICODE"><a title="sre.UNICODE" class="py-name" href="#" onclick="return doclink('link-5', 'UNICODE', 'link-5');">UNICODE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_UNICODE</tt> <tt class="py-comment"># assume unicode locale</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable sre.M=sre-module.html#M"><a title="sre.M" class="py-name" href="#" onclick="return doclink('link-6', 'M', 'link-6');">M</a></tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name" targets="Variable sre.MULTILINE=sre-module.html#MULTILINE"><a title="sre.MULTILINE" class="py-name" href="#" onclick="return doclink('link-7', 'MULTILINE', 'link-7');">MULTILINE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_MULTILINE</tt> <tt class="py-comment"># make anchors look for newline</tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable sre.S=sre-module.html#S"><a title="sre.S" class="py-name" href="#" onclick="return doclink('link-8', 'S', 'link-8');">S</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name" targets="Variable sre.DOTALL=sre-module.html#DOTALL"><a title="sre.DOTALL" class="py-name" href="#" onclick="return doclink('link-9', 'DOTALL', 'link-9');">DOTALL</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_DOTALL</tt> <tt class="py-comment"># make dot match newline</tt> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable sre.X=sre-module.html#X"><a title="sre.X" class="py-name" href="#" onclick="return doclink('link-10', 'X', 'link-10');">X</a></tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name" targets="Variable sre.VERBOSE=sre-module.html#VERBOSE"><a title="sre.VERBOSE" class="py-name" href="#" onclick="return doclink('link-11', 'VERBOSE', 'link-11');">VERBOSE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_VERBOSE</tt> <tt class="py-comment"># ignore whitespace and comments</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt>
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-comment"># sre extensions (experimental, don't rely on these)</tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-12" class="py-name" targets="Variable sre.T=sre-module.html#T"><a title="sre.T" class="py-name" href="#" onclick="return doclink('link-12', 'T', 'link-12');">T</a></tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name" targets="Variable sre.TEMPLATE=sre-module.html#TEMPLATE"><a title="sre.TEMPLATE" class="py-name" href="#" onclick="return doclink('link-13', 'TEMPLATE', 'link-13');">TEMPLATE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_TEMPLATE</tt> <tt class="py-comment"># disable backtracking</tt> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable sre.DEBUG=sre-module.html#DEBUG"><a title="sre.DEBUG" class="py-name" href="#" onclick="return doclink('link-14', 'DEBUG', 'link-14');">DEBUG</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">SRE_FLAG_DEBUG</tt> <tt class="py-comment"># dump pattern after compilation</tt> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-comment"># sre exception</tt> </tt>
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-comment"></tt><tt id="link-15" class="py-name" targets="Class sre_constants.error=sre_constants.error-class.html"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-15', 'error', 'link-15');">error</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-16', 'error', 'link-15');">error</a></tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-comment"># --------------------------------------------------------------------</tt> </tt>
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># public interface</tt> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="match"></a><div id="match-def"><a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="match-toggle" onclick="return toggle('match');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#match">match</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="match-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="match-expanded"><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-docstring">"""Try to apply the pattern at the start of the string, returning</tt> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> a match object, or None if no match was found."""</tt> </tt>
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-17" class="py-name" targets="Function sre._compile()=sre-module.html#_compile"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-17', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Function sre.match()=sre-module.html#match"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-18', 'match', 'link-18');">match</a></tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
</div><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
<a name="search"></a><div id="search-def"><a name="L131"></a><tt class="py-lineno">131</tt> <a class="py-toggle" href="#" id="search-toggle" onclick="return toggle('search');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#search">search</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="search-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="search-expanded"><a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-docstring">"""Scan through string looking for a match to the pattern, returning</tt> </tt>
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> a match object, or None if no match was found."""</tt> </tt>
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-19', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Function sre.search()=sre-module.html#search"><a title="sre.search" class="py-name" href="#" onclick="return doclink('link-20', 'search', 'link-20');">search</a></tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
</div><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt>
<a name="sub"></a><div id="sub-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="sub-toggle" onclick="return toggle('sub');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#sub">sub</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">repl</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">count</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="sub-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="sub-expanded"><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the string obtained by replacing the leftmost</tt> </tt>
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> non-overlapping occurrences of the pattern in string by the</tt> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> replacement repl. repl can be either a string or a callable;</tt> </tt>
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> if a callable, it's passed the match object and must return</tt> </tt>
<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> a replacement string to be used."""</tt> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-21" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-21', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Function sre.sub()=sre-module.html#sub"><a title="sre.sub" class="py-name" href="#" onclick="return doclink('link-22', 'sub', 'link-22');">sub</a></tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">count</tt><tt class="py-op">)</tt> </tt>
</div><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt>
<a name="subn"></a><div id="subn-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="subn-toggle" onclick="return toggle('subn');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#subn">subn</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">repl</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">count</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="subn-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="subn-expanded"><a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-docstring">"""Return a 2-tuple containing (new_string, number).</tt> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> new_string is the string obtained by replacing the leftmost</tt> </tt>
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> non-overlapping occurrences of the pattern in the source</tt> </tt>
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> string by the replacement repl. number is the number of</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> substitutions that were made. repl can be either a string or a</tt> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> callable; if a callable, it's passed the match object and must</tt> </tt>
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> return a replacement string to be used."""</tt> </tt>
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-23" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-23', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Function sre.subn()=sre-module.html#subn"><a title="sre.subn" class="py-name" href="#" onclick="return doclink('link-24', 'subn', 'link-24');">subn</a></tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">count</tt><tt class="py-op">)</tt> </tt>
</div><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt>
<a name="split"></a><div id="split-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="split-toggle" onclick="return toggle('split');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#split">split</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">maxsplit</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="split-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="split-expanded"><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-docstring">"""Split the source string by the occurrences of the pattern,</tt> </tt>
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> returning a list containing the resulting substrings."""</tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-25" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-25', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Function sre.split()=sre-module.html#split"><a title="sre.split" class="py-name" href="#" onclick="return doclink('link-26', 'split', 'link-26');">split</a></tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">maxsplit</tt><tt class="py-op">)</tt> </tt>
</div><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt>
<a name="findall"></a><div id="findall-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="findall-toggle" onclick="return toggle('findall');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#findall">findall</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="findall-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="findall-expanded"><a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-docstring">"""Return a list of all non-overlapping matches in the string.</tt> </tt>
<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> If one or more groups are present in the pattern, return a</tt> </tt>
<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> list of groups; this will be a list of tuples if the pattern</tt> </tt>
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> has more than one group.</tt> </tt>
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> Empty matches are included in the result."""</tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-27" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-27', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Function sre.findall()=sre-module.html#findall"><a title="sre.findall" class="py-name" href="#" onclick="return doclink('link-28', 'findall', 'link-28');">findall</a></tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
</div><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">hexversion</tt> <tt class="py-op">>=</tt> <tt class="py-number">0x02020000</tt><tt class="py-op">:</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">__all__</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"finditer"</tt><tt class="py-op">)</tt> </tt>
<a name="finditer"></a><div id="finditer-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="finditer-toggle" onclick="return toggle('finditer');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#finditer">finditer</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="finditer-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="finditer-expanded"><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-docstring">"""Return an iterator over all non-overlapping matches in the</tt> </tt>
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> string. For each match, the iterator returns a match object.</tt> </tt>
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> Empty matches are included in the result."""</tt> </tt>
<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-29" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-29', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Function sre.finditer()=sre-module.html#finditer"><a title="sre.finditer" class="py-name" href="#" onclick="return doclink('link-30', 'finditer', 'link-30');">finditer</a></tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
</div><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> </tt>
<a name="compile"></a><div id="compile-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="compile-toggle" onclick="return toggle('compile');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#compile">compile</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="compile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="compile-expanded"><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-docstring">"Compile a regular expression pattern, returning a pattern object."</tt> </tt>
<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-31" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-31', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
</div><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> </tt>
<a name="purge"></a><div id="purge-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="purge-toggle" onclick="return toggle('purge');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#purge">purge</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="purge-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="purge-expanded"><a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-docstring">"Clear the regular expression cache"</tt> </tt>
<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt id="link-32" class="py-name" targets="Variable sre._cache=sre-module.html#_cache"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-32', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt id="link-33" class="py-name" targets="Variable sre._cache_repl=sre-module.html#_cache_repl"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-33', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> </tt>
<a name="template"></a><div id="template-def"><a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="template-toggle" onclick="return toggle('template');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#template">template</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="template-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="template-expanded"><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-docstring">"Compile a template pattern, returning a pattern object"</tt> </tt>
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-34" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-34', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">|</tt><tt id="link-35" class="py-name"><a title="sre.T" class="py-name" href="#" onclick="return doclink('link-35', 'T', 'link-12');">T</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> </tt>
<a name="escape"></a><div id="escape-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="escape-toggle" onclick="return toggle('escape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#escape">escape</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="escape-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="escape-expanded"><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-docstring">"Escape all non-alphanumeric characters in pattern."</tt> </tt>
<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">)</tt> </tt>
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">pattern</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-string">"a"</tt> <tt class="py-op"><=</tt> <tt class="py-name">c</tt> <tt class="py-op"><=</tt> <tt class="py-string">"z"</tt> <tt class="py-keyword">or</tt> <tt class="py-string">"A"</tt> <tt class="py-op"><=</tt> <tt class="py-name">c</tt> <tt class="py-op"><=</tt> <tt class="py-string">"Z"</tt> <tt class="py-keyword">or</tt> <tt class="py-string">"0"</tt> <tt class="py-op"><=</tt> <tt class="py-name">c</tt> <tt class="py-op"><=</tt> <tt class="py-string">"9"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">c</tt> <tt class="py-op">==</tt> <tt class="py-string">"\000"</tt><tt class="py-op">:</tt> </tt>
<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"\\000"</tt> </tt>
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"\\"</tt> <tt class="py-op">+</tt> <tt class="py-name">c</tt> </tt>
<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">pattern</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
</div><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt>
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-comment"># --------------------------------------------------------------------</tt> </tt>
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># internals</tt> </tt>
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt id="link-36" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-36', '_cache', 'link-32');">_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt id="link-37" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-37', '_cache_repl', 'link-33');">_cache_repl</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> </tt>
<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"><tt class="py-name">_pattern_type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Function sre.compile()=sre-module.html#compile"><a title="sre.compile" class="py-name" href="#" onclick="return doclink('link-38', 'compile', 'link-38');">compile</a></tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt id="link-39" class="py-name" targets="Variable sre._MAXCACHE=sre-module.html#_MAXCACHE"><a title="sre._MAXCACHE" class="py-name" href="#" onclick="return doclink('link-39', '_MAXCACHE', 'link-39');">_MAXCACHE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">100</tt> </tt>
<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> </tt>
<a name="_compile"></a><div id="_compile-def"><a name="L213"></a><tt class="py-lineno">213</tt> <a class="py-toggle" href="#" id="_compile-toggle" onclick="return toggle('_compile');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_compile">_compile</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_compile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_compile-expanded"><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-comment"># internal: compile pattern</tt> </tt>
<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">cachekey</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">key</tt> </tt>
<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-40', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">cachekey</tt><tt class="py-op">)</tt> </tt>
<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">_pattern_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">pattern</tt> </tt>
<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt class="py-name">isstring</tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-string">"first argument must be string or compiled pattern"</tt> </tt>
<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="sre.compile" class="py-name" href="#" onclick="return doclink('link-41', 'compile', 'link-38');">compile</a></tt><tt class="py-op">(</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-42" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-42', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">:</tt> </tt>
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-43" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-43', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-comment"># invalid expression</tt> </tt>
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-44', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt id="link-45" class="py-name"><a title="sre._MAXCACHE" class="py-name" href="#" onclick="return doclink('link-45', '_MAXCACHE', 'link-39');">_MAXCACHE</a></tt><tt class="py-op">:</tt> </tt>
<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt id="link-46" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-46', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="sre._cache" class="py-name" href="#" onclick="return doclink('link-47', '_cache', 'link-32');">_cache</a></tt><tt class="py-op">[</tt><tt class="py-name">cachekey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt> </tt>
<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
</div><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
<a name="_compile_repl"></a><div id="_compile_repl-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="_compile_repl-toggle" onclick="return toggle('_compile_repl');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_compile_repl">_compile_repl</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_compile_repl-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_compile_repl-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-comment"># internal: compile replacement pattern</tt> </tt>
<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-48', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">pattern</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">parse_template</tt><tt class="py-op">(</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">pattern</tt><tt class="py-op">)</tt> </tt>
<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-49" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-49', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">:</tt> </tt>
<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-50" class="py-name"><a title="sre_constants.error" class="py-name" href="#" onclick="return doclink('link-50', 'error', 'link-15');">error</a></tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-comment"># invalid expression</tt> </tt>
<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-51" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-51', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt id="link-52" class="py-name"><a title="sre._MAXCACHE" class="py-name" href="#" onclick="return doclink('link-52', '_MAXCACHE', 'link-39');">_MAXCACHE</a></tt><tt class="py-op">:</tt> </tt>
<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt id="link-53" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-53', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">.</tt><tt class="py-name">clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="sre._cache_repl" class="py-name" href="#" onclick="return doclink('link-54', '_cache_repl', 'link-33');">_cache_repl</a></tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt> </tt>
<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">p</tt> </tt>
</div><a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> </tt>
<a name="_expand"></a><div id="_expand-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="_expand-toggle" onclick="return toggle('_expand');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_expand">_expand</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">match</tt><tt class="py-op">,</tt> <tt class="py-param">template</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_expand-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_expand-expanded"><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-comment"># internal: match.expand implementation hook</tt> </tt>
<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-55" class="py-name" targets="Function sre.template()=sre-module.html#template"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-55', 'template', 'link-55');">template</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">parse_template</tt><tt class="py-op">(</tt><tt id="link-56" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-56', 'template', 'link-55');">template</a></tt><tt class="py-op">,</tt> <tt class="py-name">pattern</tt><tt class="py-op">)</tt> </tt>
<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">expand_template</tt><tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-57', 'template', 'link-55');">template</a></tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-58', 'match', 'link-18');">match</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
<a name="_subx"></a><div id="_subx-def"><a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="_subx-toggle" onclick="return toggle('_subx');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_subx">_subx</a><tt class="py-op">(</tt><tt class="py-param">pattern</tt><tt class="py-op">,</tt> <tt class="py-param">template</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_subx-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_subx-expanded"><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-comment"># internal: pattern.sub/subn implementation helper</tt> </tt>
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-59" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-59', 'template', 'link-55');">template</a></tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name" targets="Function sre._compile_repl()=sre-module.html#_compile_repl"><a title="sre._compile_repl" class="py-name" href="#" onclick="return doclink('link-60', '_compile_repl', 'link-60');">_compile_repl</a></tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-61', 'template', 'link-55');">template</a></tt><tt class="py-op">,</tt> <tt class="py-name">pattern</tt><tt class="py-op">)</tt> </tt>
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-62" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-62', 'template', 'link-55');">template</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-63" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-63', 'template', 'link-55');">template</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-comment"># literal replacement</tt> </tt>
<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt id="link-64" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-64', 'template', 'link-55');">template</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">filter</tt><tt class="py-op">(</tt><tt class="py-param">match</tt><tt class="py-op">,</tt> <tt class="py-param">template</tt><tt class="py-op">=</tt><tt id="link-65" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-65', 'template', 'link-55');">template</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">expand_template</tt><tt class="py-op">(</tt><tt id="link-66" class="py-name"><a title="sre.template" class="py-name" href="#" onclick="return doclink('link-66', 'template', 'link-55');">template</a></tt><tt class="py-op">,</tt> <tt id="link-67" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-67', 'match', 'link-18');">match</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">filter</tt> </tt>
</div><a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> </tt>
<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-comment"># register myself for pickling</tt> </tt>
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">copy_reg</tt> </tt>
<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> </tt>
<a name="_pickle"></a><div id="_pickle-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="_pickle-toggle" onclick="return toggle('_pickle');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="sre-module.html#_pickle">_pickle</a><tt class="py-op">(</tt><tt class="py-param">p</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_pickle-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_pickle-expanded"><a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-68" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-68', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">pattern</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
</div><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt>
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-name">copy_reg</tt><tt class="py-op">.</tt><tt class="py-name">pickle</tt><tt class="py-op">(</tt><tt class="py-name">_pattern_type</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name" targets="Function sre._pickle()=sre-module.html#_pickle"><a title="sre._pickle" class="py-name" href="#" onclick="return doclink('link-69', '_pickle', 'link-69');">_pickle</a></tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name"><a title="sre._compile" class="py-name" href="#" onclick="return doclink('link-70', '_compile', 'link-17');">_compile</a></tt><tt class="py-op">)</tt> </tt>
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> </tt>
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-comment"># --------------------------------------------------------------------</tt> </tt>
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># experimental stuff (see python-dev discussions for details)</tt> </tt>
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="Scanner"></a><div id="Scanner-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="Scanner-toggle" onclick="return toggle('Scanner');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="sre.Scanner-class.html">Scanner</a><tt class="py-op">:</tt> </tt>
</div><div id="Scanner-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Scanner-expanded"><a name="Scanner.__init__"></a><div id="Scanner.__init__-def"><a name="L276"></a><tt class="py-lineno">276</tt> <a class="py-toggle" href="#" id="Scanner.__init__-toggle" onclick="return toggle('Scanner.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="sre.Scanner-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">lexicon</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="Scanner.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scanner.__init__-expanded"><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">sre_constants</tt> <tt class="py-keyword">import</tt> <tt class="py-name">BRANCH</tt><tt class="py-op">,</tt> <tt class="py-name">SUBPATTERN</tt> </tt>
<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lexicon</tt> <tt class="py-op">=</tt> <tt class="py-name">lexicon</tt> </tt>
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-comment"># combine phrases into a compound pattern</tt> </tt>
<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">Pattern</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">flags</tt> </tt>
<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">phrase</tt><tt class="py-op">,</tt> <tt class="py-name">action</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lexicon</tt><tt class="py-op">:</tt> </tt>
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">SubPattern</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">SUBPATTERN</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">parse</tt><tt class="py-op">(</tt><tt class="py-name">phrase</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_parse</tt><tt class="py-op">.</tt><tt class="py-name">SubPattern</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">BRANCH</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scanner</tt> <tt class="py-op">=</tt> <tt class="py-name">sre_compile</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="sre.compile" class="py-name" href="#" onclick="return doclink('link-71', 'compile', 'link-38');">compile</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
</div><a name="Scanner.scan"></a><div id="Scanner.scan-def"><a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="Scanner.scan-toggle" onclick="return toggle('Scanner.scan');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="sre.Scanner-class.html#scan">scan</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="Scanner.scan-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Scanner.scan-expanded"><a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">append</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt> </tt>
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-72', 'match', 'link-18');">match</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scanner</tt><tt class="py-op">.</tt><tt class="py-name">scanner</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-73', 'match', 'link-18');">match</a></tt> </tt>
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-74', 'match', 'link-18');">match</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">m</tt><tt class="py-op">:</tt> </tt>
<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">end</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">==</tt> <tt class="py-name">j</tt><tt class="py-op">:</tt> </tt>
<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">action</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lexicon</tt><tt class="py-op">[</tt><tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">lastindex</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">action</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="sre.match" class="py-name" href="#" onclick="return doclink('link-75', 'match', 'link-18');">match</a></tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> </tt>
<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">action</tt> <tt class="py-op">=</tt> <tt class="py-name">action</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">m</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">action</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">action</tt><tt class="py-op">)</tt> </tt>
<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">j</tt> </tt>
<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
</div></div><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th> <a
href="epytext_example-module.html">Home</a> </th>
<!-- Tree link -->
<th> <a
href="module-tree.html">Trees</a> </th>
<!-- Index link -->
<th> <a
href="identifier-index.html">Indices</a> </th>
<!-- Help link -->
<th> <a
href="help.html">Help</a> </th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
><a class="navbar" target="_top" href="http://epydoc.sourceforge.net">epydoc examples</a></th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Wed Jan 30 14:10:07 2008
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>
|