scratch/output/Scratch/fr/blog/2009-09-replace-all-except-some-part/index.html
Yann Esposito (Yogsototh) c53114f72a Merge branch 'master' into next
(Recompiled)

Conflicts:
	output/Scratch/assets/css/main.css
	output/Scratch/en/blog/Yesod-excellent-ideas/index.html
	output/Scratch/en/blog/feed/feed.xml
	output/Scratch/en/blog/index.html
	output/Scratch/en/index.html
	output/Scratch/fr/blog/Yesod-excellent-ideas/index.html
	output/Scratch/fr/blog/feed/feed.xml
	output/Scratch/fr/blog/index.html
	output/Scratch/fr/index.html
	output/Scratch/sitemap.xml
	output/index.html
2011-11-16 13:08:26 +01:00

254 lines
No EOL
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="ruby, regexp, regular expression">
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Remplacer tout sauf une partie" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2009-09-replace-all-except-some-part/" />
<link rel="alternate" lang="en" xml:lang="en" title="replace all except some part" type="text/html" hreflang="en" href="/Scratch/en/blog/2009-09-replace-all-except-some-part/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<title>Remplacer tout sauf une partie</title>
</head>
<body lang="fr" class="article">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/2009-09-replace-all-except-some-part/" onclick="setLanguage('en')">in English</a>
</div>
<div class="flush"></div>
</div>
<div id="titre">
<h1>
Remplacer tout sauf une partie
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>My problem is simple:</p>
<p>I want to filter a text except some part of it. I can match easily the part I dont want to be filtered. For example</p>
<div>
<pre class="twilight">
...
text
...
BEGIN not to filter
...
text
...
END not to filter
...
text
...
</pre>
</div>
<p>I searched a better way to do that, but the best I can do is using <code>split</code> and <code>scan</code>.</p>
<div>
<pre class="twilight">
<span class="Keyword">def</span> <span class="Entity">allExceptCode</span>(<span class="Variable"> f<span class="Variable">,</span> content </span>)
regexp<span class="Keyword">=</span><span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp">&lt;code<span class="StringRegexp"><span class="StringRegexp">[</span>^&gt;<span class="StringRegexp">]</span></span>*&gt;.*?&lt;<span class="StringRegexpSpecial">\/</span>code&gt;</span><span class="StringRegexp"><span class="StringRegexp">/m</span></span>
tmp<span class="Keyword">=</span><span class="String"><span class="String">&quot;</span><span class="String">&quot;</span></span>
mem<span class="Keyword">=</span>[]
content.<span class="Entity">scan</span>(regexp).<span class="Entity">each</span> <span class="Keyword">do </span>|<span class="Variable">c</span>|
mem <span class="Keyword">&lt;&lt;=</span> c
<span class="Keyword">end</span>
i<span class="Keyword">=</span><span class="Constant">0</span>
content.<span class="Entity">split</span>(regexp).<span class="Entity">each</span> <span class="Keyword">do </span>|<span class="Variable">x</span>|
tmp <span class="Keyword">&lt;&lt;=</span> <span class="Entity">send</span>(f,x)
<span class="Keyword">if</span> <span class="Keyword">not</span> mem[i].<span class="Entity">nil?</span>
tmp <span class="Keyword">&lt;&lt;=</span> mem[i]
i<span class="Keyword">+=</span><span class="Constant">1</span>
<span class="Keyword">end</span>
<span class="Keyword">end</span>
tmp
<span class="Keyword">end</span>
</pre>
</div>
<p>An usage is:</p>
<div>
<pre class="twilight">
<span class="Keyword">def</span> <span class="Entity">filter</span>(<span class="Variable">content</span>)
content.<span class="Entity">gsub</span>(<span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp">e</span><span class="StringRegexp"><span class="StringRegexp">/</span></span>,<span class="String"><span class="String">'</span>X<span class="String">'</span></span>)
<span class="Keyword">end</span>
...
<span class="Entity">allExceptCode</span>(<span class="Constant"><span class="Constant">:</span>filter</span>, content)
...
</pre>
</div>
<p>A better syntax would be:</p>
<div>
<pre class="twilight">
<span class="Comment"><span class="Comment">#</span>&nbsp;!!!!!!!!!! THIS SYNTAX DOES NOT WORK&nbsp;!!!!!!! #</span>
<span class="Keyword">def</span> <span class="Entity">allExceptCode</span>(<span class="Variable"> f<span class="Variable">,</span> content </span>)
regexp<span class="Keyword">=</span><span class="StringRegexp"><span class="StringRegexp">/</span></span><span class="StringRegexp">&lt;code<span class="StringRegexp"><span class="StringRegexp">[</span>^&gt;<span class="StringRegexp">]</span></span>*&gt;.*?&lt;<span class="StringRegexpSpecial">\/</span>code&gt;</span><span class="StringRegexp"><span class="StringRegexp">/m</span></span>
tmp<span class="Keyword">=</span><span class="String"><span class="String">&quot;</span><span class="String">&quot;</span></span>
content.<span class="Entity">split</span>(regexp).<span class="Entity">each</span> <span class="Keyword">do </span>|<span class="Variable">x</span>|
separator<span class="Keyword">=</span><span class="Variable"><span class="Variable">$</span>&amp;</span>
tmp <span class="Keyword">&lt;&lt;=</span> <span class="Entity">send</span>(f,x)
<span class="Keyword">if</span> <span class="Keyword">not</span> separator.<span class="Entity">nil?</span>
tmp <span class="Keyword">&lt;&lt;=</span> separator
<span class="Keyword">end</span>
<span class="Keyword">end</span>
tmp
<span class="Keyword">end</span>
</pre>
</div>
<p>I would expect the split make a search on a regular expression and then give the matched expression into the <code>$&amp;</code> variable. But it is not the case.</p>
<p>If someone know a nicer way to do that I will be happy to know how.</p>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Commentaires</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">commentaires</h2>
<noscript>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/2009-09-replace-all-except-some-part/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/2009-09-replace-all-except-some-part/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/fr/">Bienvenue</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li>
<li><a href="/Scratch/fr/about/">À propos</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
articles précédents
<div class="previous_article">
<a href="/Scratch/fr/blog/11_Load_Disqus_Asynchronously/"><span class="nicer">«</span>&nbsp;Load Disqus Asynchronously [en]</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/10_Synchronize_Custom_WebSite_with_mobileMe/"><span class="nicer">«</span>&nbsp;Héberger son site personnel sur le site mobileMe</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/09_Why_I_didn-t_keep_whosamung-us/"><span class="nicer">«</span>&nbsp;Pourquoi je n'ai pas conservé whos.amung.us</a>
</div>
</div>
<div id="next_articles">
articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/2009-09-jQuery-Tag-Cloud/">jQuery Tag Cloud [en]&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/2009-09-Disqus-versus-Intense-Debate--Why-I-switched-/">Disqus contre Intense Debate (pourquois j'ai changé)&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/2009-10-How-to-preload-your-site-with-style/">Charger une page web avec style&nbsp;<span class="nicer">»</span></a>
</div>
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div>
<div id="lastmod">
Écrit le : 22/09/2009
modifié le : 09/05/2010
</div>
<div>
Site entièrement réalisé avec
<a href="http://www.vim.org">Vim</a>
et
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/fr/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/fr/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>