Sophie

Sophie

distrib > * > cooker > x86_64 > by-pkgid > c82fbb12a1c61d087a9308adf47a46ab > files > 448

ocaml-ocamlnet-devel-2.2.9-10.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link rel="previous" href="Nethtml.html">
<link rel="next" href="Netstring_pcre.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of class attributes" rel=Appendix href="index_attributes.html">
<link title="Index of class methods" rel=Appendix href="index_methods.html">
<link title="Index of classes" rel=Appendix href="index_classes.html">
<link title="Index of class types" rel=Appendix href="index_class_types.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html">
<link title="Equeue" rel="Chapter" href="Equeue.html">
<link title="Unixqueue" rel="Chapter" href="Unixqueue.html">
<link title="Uq_engines" rel="Chapter" href="Uq_engines.html">
<link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html">
<link title="Unixqueue_mt" rel="Chapter" href="Unixqueue_mt.html">
<link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html">
<link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html">
<link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html">
<link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html">
<link title="Netcgi" rel="Chapter" href="Netcgi.html">
<link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html">
<link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html">
<link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html">
<link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html">
<link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html">
<link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html">
<link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html">
<link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html">
<link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html">
<link title="Http_client" rel="Chapter" href="Http_client.html">
<link title="Telnet_client" rel="Chapter" href="Telnet_client.html">
<link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html">
<link title="Ftp_client" rel="Chapter" href="Ftp_client.html">
<link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html">
<link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html">
<link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html">
<link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html">
<link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html">
<link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html">
<link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html">
<link title="Netplex_types" rel="Chapter" href="Netplex_types.html">
<link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html">
<link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html">
<link title="Netplex_log" rel="Chapter" href="Netplex_log.html">
<link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html">
<link title="Netplex_container" rel="Chapter" href="Netplex_container.html">
<link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html">
<link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html">
<link title="Netplex_main" rel="Chapter" href="Netplex_main.html">
<link title="Netplex_config" rel="Chapter" href="Netplex_config.html">
<link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html">
<link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html">
<link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html">
<link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html">
<link title="Netshm" rel="Chapter" href="Netshm.html">
<link title="Netshm_data" rel="Chapter" href="Netshm_data.html">
<link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html">
<link title="Netshm_array" rel="Chapter" href="Netshm_array.html">
<link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html">
<link title="Netconversion" rel="Chapter" href="Netconversion.html">
<link title="Netchannels" rel="Chapter" href="Netchannels.html">
<link title="Netstream" rel="Chapter" href="Netstream.html">
<link title="Mimestring" rel="Chapter" href="Mimestring.html">
<link title="Netmime" rel="Chapter" href="Netmime.html">
<link title="Netsendmail" rel="Chapter" href="Netsendmail.html">
<link title="Neturl" rel="Chapter" href="Neturl.html">
<link title="Netaddress" rel="Chapter" href="Netaddress.html">
<link title="Netbuffer" rel="Chapter" href="Netbuffer.html">
<link title="Netdate" rel="Chapter" href="Netdate.html">
<link title="Netencoding" rel="Chapter" href="Netencoding.html">
<link title="Netulex" rel="Chapter" href="Netulex.html">
<link title="Netaccel" rel="Chapter" href="Netaccel.html">
<link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html">
<link title="Nethtml" rel="Chapter" href="Nethtml.html">
<link title="Netstring_str" rel="Chapter" href="Netstring_str.html">
<link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html">
<link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html">
<link title="Netmappings" rel="Chapter" href="Netmappings.html">
<link title="Netaux" rel="Chapter" href="Netaux.html">
<link title="Nethttp" rel="Chapter" href="Nethttp.html">
<link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html">
<link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html">
<link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html">
<link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html">
<link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html">
<link title="Netsys" rel="Chapter" href="Netsys.html">
<link title="Netpop" rel="Chapter" href="Netpop.html">
<link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html">
<link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html">
<link title="Rpc_time" rel="Chapter" href="Rpc_time.html">
<link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html">
<link title="Rtypes" rel="Chapter" href="Rtypes.html">
<link title="Xdr" rel="Chapter" href="Xdr.html">
<link title="Rpc" rel="Chapter" href="Rpc.html">
<link title="Rpc_program" rel="Chapter" href="Rpc_program.html">
<link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html">
<link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html">
<link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html">
<link title="Rpc_client" rel="Chapter" href="Rpc_client.html">
<link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html">
<link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html">
<link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html">
<link title="Rpc_server" rel="Chapter" href="Rpc_server.html">
<link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html">
<link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html">
<link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html">
<link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html">
<link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html">
<link title="Shell_sys" rel="Chapter" href="Shell_sys.html">
<link title="Shell" rel="Chapter" href="Shell.html">
<link title="Shell_uq" rel="Chapter" href="Shell_uq.html">
<link title="Shell_mt" rel="Chapter" href="Shell_mt.html">
<link title="Shell_intro" rel="Chapter" href="Shell_intro.html">
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><title>Ocamlnet 2 Reference Manual : Netstring_str</title>
</head>
<body>
<div class="navbar"><a href="Nethtml.html">Previous</a>
&nbsp;<a href="index.html">Up</a>
&nbsp;<a href="Netstring_pcre.html">Next</a>
</div>
<center><h1>Module <a href="type_Netstring_str.html">Netstring_str</a></h1></center>
<br>
<pre><span class="keyword">module</span> Netstring_str: <code class="code">sig</code> <a href="Netstring_str.html">..</a> <code class="code">end</code></pre>Wrapper for regexps with <code class="code">Str</code> syntax
<p>

 This module was written at a time when we had only the <code class="code">Str</code> module
 for regular expressions. However, <code class="code">Str</code> has an interface that does
 not work for multi-threaded programs, because the state of the module
 is visible to the outside. The module <code class="code">Netstring_str</code> is similar to <code class="code">Str</code>,
 but has a thread-compatible interface.
<p>

 Now we have the much better PCRE library for regular expressions.
 This implementation of <code class="code">Netstring_str</code> bases on the PCRE engine but retains
 the old interface as much as possible. This includes that the <code class="code">regexp</code>
 function parses old-style regular expressions and internally translates 
 them to PCRE-style expressions.
<p>

 See also <a href="Netstring_pcre.html"><code class="code">Netstring_pcre</code></a>. The difference is that <code class="code">Netstring_pcre</code> expects
 already PCRE-style regular expressions and does not translate them.<br>
<hr width="100%">
<br>
<b>Supported regexp syntax</b>
<p>

 <pre><code class="code"> .             matches every character but newline
 e*            matches e several times
 e+            matches e several times but at least once
 e?            matches e optionally
 e{m,n}        matches e at least m times and at most n times
 e1\|e2        matches e1 or e2
 [set]         matches the characters from set
 [^set]        matches the characters except from set
 \(...\)       group paranthesis
 \n            back reference
 \w            matches word (= alphanumeric characters (and underscore))
 \W            matches characters except \w
 \b            matches at word boundary
 \B            matches everywhere but not at word boundary
 \&lt;            matches at beginning of word
 \&gt;            matches at end of word
 ^             matches at beginning of line
 $             matches at end of line
 \`            matches at beginning of buffer
 \'            matches at end of buffer
 </code></pre>
<p>

 This is exactly what <code class="code">Str</code> supports with one exception. Character classes
 are not implemented.<br>
<pre><span class="keyword">type</span> <a name="TYPEregexp"></a><code class="type"></code>regexp = <code class="type">Pcre.regexp</code> </pre>
<div class="info">
The type of regular expressions; now based on <code class="code">Pcre</code><br>
</div>

<pre><span class="keyword">type</span> <a name="TYPEsplit_result"></a><code class="type"></code>split_result = <code class="type">Str.split_result</code> = </pre><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Text</span> <span class="keyword">of</span> <code class="type">string</code></code></td>

</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Delim</span> <span class="keyword">of</span> <code class="type">string</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Here we keep compatibility with <code class="code">Str</code></td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>


<pre><span class="keyword">type</span> <a name="TYPEresult"></a><code class="type"></code>result </pre>
<div class="info">
The type of matching results<br>
</div>

<pre><span class="keyword">val</span> <a name="VALregexp"></a>regexp : <code class="type">string -> <a href="Netstring_str.html#TYPEregexp">regexp</a></code></pre><div class="info">
Parses a regexp<br>
</div>
<pre><span class="keyword">val</span> <a name="VALregexp_case_fold"></a>regexp_case_fold : <code class="type">string -> <a href="Netstring_str.html#TYPEregexp">regexp</a></code></pre><div class="info">
Parses a case-insensitive regexp<br>
</div>
<pre><span class="keyword">val</span> <a name="VALquote"></a>quote : <code class="type">string -> string</code></pre><div class="info">
Quotes a string such that it can be included in a regexp<br>
</div>
<pre><span class="keyword">val</span> <a name="VALregexp_string"></a>regexp_string : <code class="type">string -> <a href="Netstring_str.html#TYPEregexp">regexp</a></code></pre><div class="info">
Returns a regexp that matches exactly the string<br>
</div>
<pre><span class="keyword">val</span> <a name="VALregexp_string_case_fold"></a>regexp_string_case_fold : <code class="type">string -> <a href="Netstring_str.html#TYPEregexp">regexp</a></code></pre><div class="info">
Returns a case-insensitive regexp that matches exactly the string<br>
</div>
<br>
Note: the <code class="code">groups</code> argument is ignored in the following functions.
 Once upon a time this argument determined how many groups were 
 copied to the <code class="code">result</code> value.
 Now all groups are accessible in the <code class="code">result</code> value, no matter
 what <code class="code">groups</code> says.<br>
<pre><span class="keyword">val</span> <a name="VALstring_match"></a>string_match : <code class="type">?groups:int -><br>       <a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> int -> <a href="Netstring_str.html#TYPEresult">result</a> option</code></pre><div class="info">
Matches the string at the position with the regexp. Returns
 <code class="code">None</code> if no match is found. Returns <code class="code">Some r</code> on success,
 and <code class="code">r</code> describes the match.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsearch_forward"></a>search_forward : <code class="type">?groups:int -><br>       <a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> int -> int * <a href="Netstring_str.html#TYPEresult">result</a></code></pre><div class="info">
Searches a match of the string with the regexp, starting at
 the position and in forward direction.
 Raises <code class="code">Not_found</code> if no match could be found.
 Returns <code class="code">(p,r)</code> when a match at position <code class="code">p</code> is found,
 described by <code class="code">r</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsearch_backward"></a>search_backward : <code class="type">?groups:int -><br>       <a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> int -> int * <a href="Netstring_str.html#TYPEresult">result</a></code></pre><div class="info">
Searches a match of the string with the regexp, starting at
 the position and in backward direction.
 Raises <code class="code">Not_found</code> if no match could be found.
 Returns <code class="code">(p,r)</code> when a match at position <code class="code">p</code> is found,
 described by <code class="code">r</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmatched_string"></a>matched_string : <code class="type"><a href="Netstring_str.html#TYPEresult">result</a> -> string -> string</code></pre><div class="info">
Extracts the matched part from the string. The string argument
 must be the same string passed to <code class="code">string_match</code> or the search
 functions, and the result argument must be the corresponding
 result.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmatch_beginning"></a>match_beginning : <code class="type"><a href="Netstring_str.html#TYPEresult">result</a> -> int</code></pre><div class="info">
Returns the position where the matched part begins<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmatch_end"></a>match_end : <code class="type"><a href="Netstring_str.html#TYPEresult">result</a> -> int</code></pre><div class="info">
Returns the position where the matched part ends<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmatched_group"></a>matched_group : <code class="type"><a href="Netstring_str.html#TYPEresult">result</a> -> int -> string -> string</code></pre><div class="info">
Extracts the substring the nth group matches from the whole
 string. The string argument
 must be the same string passed to <code class="code">string_match</code> or the search
 functions, and the result argument must be the corresponding
 result.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALgroup_beginning"></a>group_beginning : <code class="type"><a href="Netstring_str.html#TYPEresult">result</a> -> int -> int</code></pre><div class="info">
Returns the position where the substring matching the nth
 group begins<br>
</div>
<pre><span class="keyword">val</span> <a name="VALgroup_end"></a>group_end : <code class="type"><a href="Netstring_str.html#TYPEresult">result</a> -> int -> int</code></pre><div class="info">
Returns the position where the substring matching the nth
 group ends<br>
</div>
<pre><span class="keyword">val</span> <a name="VALglobal_replace"></a>global_replace : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> string -> string</code></pre><div class="info">
<code class="code">global_replace re templ s</code>: Replaces all matchings of <code class="code">re</code> in
 <code class="code">s</code> by <code class="code">templ</code>.
<p>

 In <code class="code">templ</code> one can refer to matched groups by the backslash notation:
 <code class="code">\1</code> refers to the first group, <code class="code">\2</code> to the second etc.
 <code class="code">\0</code> is the whole match. <code class="code">\\ </code> is the backslash character.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALreplace_first"></a>replace_first : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> string -> string</code></pre><div class="info">
<code class="code">replace_first re templ s</code>: Replaces the first match of <code class="code">re</code> in
 <code class="code">s</code> by <code class="code">templ</code>.
<p>

 In <code class="code">templ</code> one can refer to matched groups by the backslash notation:
 <code class="code">\1</code> refers to the first group, <code class="code">\2</code> to the second etc.
 <code class="code">\0</code> is the whole match. <code class="code">\\ </code> is the backslash character.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALglobal_substitute"></a>global_substitute : <code class="type">?groups:int -><br>       <a href="Netstring_str.html#TYPEregexp">regexp</a> -><br>       (<a href="Netstring_str.html#TYPEresult">result</a> -> string -> string) -> string -> string</code></pre><div class="info">
<code class="code">global_substitute re subst s</code>: Applies the substitution function
 <code class="code">subst</code> to all matchings of <code class="code">re</code> in <code class="code">s</code>, and returns the 
 transformed string. <code class="code">subst</code> is called with the current <code class="code">result</code>
 of the match and the whole string <code class="code">s</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsubstitute_first"></a>substitute_first : <code class="type">?groups:int -><br>       <a href="Netstring_str.html#TYPEregexp">regexp</a> -><br>       (<a href="Netstring_str.html#TYPEresult">result</a> -> string -> string) -> string -> string</code></pre><div class="info">
<code class="code">substitute_first re subst s</code>: Applies the substitution function
 <code class="code">subst</code> to the first matching of <code class="code">re</code> in <code class="code">s</code>, and returns the 
 transformed string. <code class="code">subst</code> is called with the current <code class="code">result</code>
 of the match and the whole string <code class="code">s</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsplit"></a>split : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> string list</code></pre><div class="info">
Splits the string according to the regexp in substrings.
 Occurrences of the delimiter at the beginning and the end
 are ignored.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALbounded_split"></a>bounded_split : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> int -> string list</code></pre><div class="info">
Splits into at most <code class="code">n</code> substrings, based on <code class="code">split</code><br>
</div>
<pre><span class="keyword">val</span> <a name="VALsplit_delim"></a>split_delim : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> string list</code></pre><div class="info">
Same as <code class="code">split</code>, but occurrences of the delimiter at the beginning 
 and the end are returned as empty strings<br>
</div>
<pre><span class="keyword">val</span> <a name="VALbounded_split_delim"></a>bounded_split_delim : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> int -> string list</code></pre><div class="info">
Splits into at most <code class="code">n</code> substrings, based on <code class="code">split_delim</code><br>
</div>
<pre><span class="keyword">val</span> <a name="VALfull_split"></a>full_split : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> <a href="Netstring_str.html#TYPEsplit_result">split_result</a> list</code></pre><div class="info">
Like <code class="code">split_delim</code>, but returns the delimiters in the result<br>
</div>
<pre><span class="keyword">val</span> <a name="VALbounded_full_split"></a>bounded_full_split : <code class="type"><a href="Netstring_str.html#TYPEregexp">regexp</a> -> string -> int -> <a href="Netstring_str.html#TYPEsplit_result">split_result</a> list</code></pre><div class="info">
Splits into at most <code class="code">n</code> substrings, based on <code class="code">full_split</code><br>
</div>
<pre><span class="keyword">val</span> <a name="VALstring_before"></a>string_before : <code class="type">string -> int -> string</code></pre><div class="info">
The first <code class="code">n</code> characters of a string<br>
</div>
<pre><span class="keyword">val</span> <a name="VALstring_after"></a>string_after : <code class="type">string -> int -> string</code></pre><div class="info">
The last <code class="code">n</code> characters of a string<br>
</div>
<pre><span class="keyword">val</span> <a name="VALfirst_chars"></a>first_chars : <code class="type">string -> int -> string</code></pre><div class="info">
Same as <code class="code">string_before</code><br>
</div>
<pre><span class="keyword">val</span> <a name="VALlast_chars"></a>last_chars : <code class="type">string -> int -> string</code></pre><div class="info">
Same as <code class="code">string_after</code><br>
</div>
</body></html>