<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.squi.fr/index.php?action=history&amp;feed=atom&amp;title=Expressions_R%C3%A9guli%C3%A8res</id>
	<title>Expressions Régulières - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.squi.fr/index.php?action=history&amp;feed=atom&amp;title=Expressions_R%C3%A9guli%C3%A8res"/>
	<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;action=history"/>
	<updated>2026-06-12T01:37:43Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=2263&amp;oldid=prev</id>
		<title>Justine le 22 juin 2022 à 12:10</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=2263&amp;oldid=prev"/>
		<updated>2022-06-22T12:10:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 22 juin 2022 à 12:10&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre class=&quot;mw-parser-output&quot;&amp;gt;https&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//python.iutsf.org/lecon-8-les-expressions-regulieres/&amp;lt;/pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;linux]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:prog]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Généralités =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Généralités =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki-mediawiki:diff:1.41:old-949:rev-2263:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=949&amp;oldid=prev</id>
		<title>Justine le 8 mai 2019 à 11:29</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=949&amp;oldid=prev"/>
		<updated>2019-05-08T11:29:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 8 mai 2019 à 11:29&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Ligne 4 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 4 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Généralités =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Généralités =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Caractères spéciaux&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;nbsp;&lt;/del&gt;: ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Caractères spéciaux &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;et opérateurs &lt;/ins&gt;: ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La liste des caractères spéciaux en matière de Regex est la suivante&amp;amp;nbsp;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La liste des caractères spéciaux en matière de Regex est la suivante&amp;amp;nbsp;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot;&gt;Ligne 39 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 40 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*\w&amp;amp;nbsp;: Présence alphanumérique, ce qui équivaut à [a-zA-Z0-9_].  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*\w&amp;amp;nbsp;: Présence alphanumérique, ce qui équivaut à [a-zA-Z0-9_].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*\W&amp;amp;nbsp;: Pas de présence alphanumérique [^a-zA-Z0-9_].  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*\W&amp;amp;nbsp;: Pas de présence alphanumérique [^a-zA-Z0-9_].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*\b : s&#039;arrête à une séparation (sa longueur est nulle, c&#039;est juste un endroit précis) entre deux mots. Cette séparation correspond à un espace entre deux lettres, ou une lettre suivie d&#039;une non-lettre. Attention, les éèà... ne sont pas vus comme des lettres. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**Pour résumer : &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;There are three different positions that qualify as word boundaries:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;***Before the first character in the string, if the first character is a word character. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;***After the last character in the string, if the last character is a word character. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;***Between two characters in the string, where one is a word character and the other is not a word character. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;***Issu de : https://www.regular-expressions.info/wordboundaries.html     &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Et d&amp;#039;autres...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Et d&amp;#039;autres...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=947&amp;oldid=prev</id>
		<title>Justine le 7 mai 2019 à 22:27</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=947&amp;oldid=prev"/>
		<updated>2019-05-07T22:27:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 7 mai 2019 à 22:27&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;https://python.iutsf.org/lecon-8-les-expressions-regulieres/&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;https://python.iutsf.org/lecon-8-les-expressions-regulieres/&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Généralités =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Généralités =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Ligne 48 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 49 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Cette fonction renvoie True si match ou False sinon.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Cette fonction renvoie True si match ou False sinon.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Quotes ou pas quotes? ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;On note généralement, mais pas forcément, les regex entre quotes : &#039;regex&#039;&amp;lt;br/&amp;gt; En python, c&#039;est expliqué plus bas, on peut faire ça ma on peut aussi utiliser r&quot;regex&quot;, ce qui est pas mal mieux, à mon avis (ça évite que python vienne fourrer son nez dans nos caractères d&#039;échappement, au hasard)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Utilisation et exemples =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Utilisation et exemples =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=946&amp;oldid=prev</id>
		<title>Justine le 7 mai 2019 à 22:24</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=946&amp;oldid=prev"/>
		<updated>2019-05-07T22:24:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 7 mai 2019 à 22:24&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l255&quot;&gt;Ligne 255 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 255 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Il ne faut pas mettre d&amp;#039;espaces dans une regex &amp;quot;pour que ce soit plus lisible&amp;quot;. En effet, mettre un espace, c&amp;#039;est chercher un espace&amp;amp;nbsp;! Il faut tout coller. C&amp;#039;est moche, mais sinon, il va falloir échapper les espaces ( \ ) et c&amp;#039;est encore plus moche...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Il ne faut pas mettre d&amp;#039;espaces dans une regex &amp;quot;pour que ce soit plus lisible&amp;quot;. En effet, mettre un espace, c&amp;#039;est chercher un espace&amp;amp;nbsp;! Il faut tout coller. C&amp;#039;est moche, mais sinon, il va falloir échapper les espaces ( \ ) et c&amp;#039;est encore plus moche...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Regex du type &quot;ne contient que&quot; ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Parce que ce serait trop simple d&#039;avoir un signe pour &quot;ne contient que truc ou bidule&quot;, il faut à la place se farcir quelque chose du genre :&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*La chaîne commence par truc (ou bidule) &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*suivi de n&#039;importe quel nombre de trucs ou de bidules &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*et se termine par truc ou bidule. (pfiou !) &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Exemple : pour trouver une chaîne ne contenant que des u et des t : $[ut](t*u*)[ut]$&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Des méthodes Python en lien avec les regex =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Des méthodes Python en lien avec les regex =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l360&quot;&gt;Ligne 360 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 370 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== compile ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== compile &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(et une méthode plus simple pour écrire des regex) &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On peut compiler une regex pour l&amp;#039;utiliser plusieurs fois. C&amp;#039;est utile quand on doit s&amp;#039;en resservir&amp;amp;nbsp;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On peut compiler une regex pour l&amp;#039;utiliser plusieurs fois. C&amp;#039;est utile quand on doit s&amp;#039;en resservir&amp;amp;nbsp;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l369&quot;&gt;Ligne 369 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 379 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; mot_de_passe = input(&amp;quot;Tapez votre mot de passe&amp;amp;nbsp;: &amp;quot;)&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; mot_de_passe = input(&amp;quot;Tapez votre mot de passe&amp;amp;nbsp;: &amp;quot;)&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ici l&#039;encodage r&quot;&quot; signifie &quot;raw&quot;&amp;amp;nbsp;: on passe la chaîne brute, sans y interpréter quoi que ce soit&amp;amp;nbsp;: python ne cherche pas à interpréter les \ ou quoi, il prend la chaîne et la passe directement à re.search.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ici l&#039;encodage r&quot;&quot; signifie &quot;raw&quot;&amp;amp;nbsp;: on passe la chaîne brute, sans y interpréter quoi que ce soit&amp;amp;nbsp;: python ne cherche pas à interpréter les \ ou quoi, il prend la chaîne et la passe directement à re.search. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vachement mieux que de compter les &#039; et les &quot; ...&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;nbsp;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
	<entry>
		<id>https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=945&amp;oldid=prev</id>
		<title>Justine : Page créée avec « &lt;pre class=&quot;mw-parser-output&quot;&gt;https://python.iutsf.org/lecon-8-les-expressions-regulieres/&lt;/pre&gt;  = Généralités =  == Caractères spéciaux&amp;nbsp;: ==  La liste des cara... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.squi.fr/index.php?title=Expressions_R%C3%A9guli%C3%A8res&amp;diff=945&amp;oldid=prev"/>
		<updated>2019-05-07T22:07:39Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &amp;lt;pre class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;https://python.iutsf.org/lecon-8-les-expressions-regulieres/&amp;lt;/pre&amp;gt;  = Généralités =  == Caractères spéciaux : ==  La liste des cara... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;https://python.iutsf.org/lecon-8-les-expressions-regulieres/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Généralités =&lt;br /&gt;
&lt;br /&gt;
== Caractères spéciaux&amp;amp;nbsp;: ==&lt;br /&gt;
&lt;br /&gt;
La liste des caractères spéciaux en matière de Regex est la suivante&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;^ $ / . \&amp;amp;nbsp;? + * ( ) [ ] { } |&lt;br /&gt;
&lt;br /&gt;
Il faut les protéger avec des \ si on les cherche en tant que caractères normaux.&lt;br /&gt;
&lt;br /&gt;
Leur utilité, en résumé&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
*^&amp;amp;nbsp;: Début de phrase &lt;br /&gt;
**[^] différent de&amp;amp;nbsp;: [^r] signifie &amp;quot;un caractère qui n&amp;#039;est pas r&amp;quot;   &lt;br /&gt;
*$&amp;amp;nbsp;: Fin de phrase &lt;br /&gt;
*/&amp;amp;nbsp;:&amp;amp;nbsp;? &lt;br /&gt;
*.&amp;amp;nbsp;: N&amp;#039;importe quel caractère &lt;br /&gt;
*?&amp;amp;nbsp;: 0 ou 1 fois &lt;br /&gt;
*+&amp;amp;nbsp;: 1 fois ou plus &lt;br /&gt;
**&amp;amp;nbsp;: N&amp;#039;importe quel nombre de fois (0, 1, ou plus)   &lt;br /&gt;
*()&amp;amp;nbsp;: isoler un pattern &lt;br /&gt;
*[]&amp;amp;nbsp;: Donner une liste des caractères autorisés &lt;br /&gt;
**[abc] équivaut à a, b, ou c   &lt;br /&gt;
*{}&amp;amp;nbsp;: Donner un nombre d&amp;#039;occurences plus ou moins précis &lt;br /&gt;
*|&amp;amp;nbsp;: ou &lt;br /&gt;
**(x|y) signifie x ou y mais pas les deux   &lt;br /&gt;
&lt;br /&gt;
On compte d&amp;#039;autres opérateurs particuliers&amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
*\d&amp;amp;nbsp;: Uniquement des chiffres &lt;br /&gt;
**Equivaut à [0-9]   &lt;br /&gt;
*\D&amp;amp;nbsp;: Le segment ne contient pas de chiffres &lt;br /&gt;
**Equivaut à [^0-9]   &lt;br /&gt;
*\s&amp;amp;nbsp;: Un séparateur (espace, tab, retourà la ligne), ce qui équivaut à [ \t\n\r\f\v] &lt;br /&gt;
*\S&amp;amp;nbsp;: Pas d&amp;#039;espace, ce qui équivaut à [^ \t\n\r\f\v] &lt;br /&gt;
*\w&amp;amp;nbsp;: Présence alphanumérique, ce qui équivaut à [a-zA-Z0-9_]. &lt;br /&gt;
*\W&amp;amp;nbsp;: Pas de présence alphanumérique [^a-zA-Z0-9_]. &lt;br /&gt;
&lt;br /&gt;
Et d&amp;#039;autres...&lt;br /&gt;
&lt;br /&gt;
== Module re ==&lt;br /&gt;
&lt;br /&gt;
En python, les regex s&amp;#039;utilisent avec le module re. La fonction la plus essentiel est re.search, qui permet de rechercher à l&amp;#039;aide d&amp;#039;une regex&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
re.search(PATTERN, TEXT, [OPTIONS])&lt;br /&gt;
&lt;br /&gt;
Cette fonction renvoie True si match ou False sinon.&lt;br /&gt;
&lt;br /&gt;
= Utilisation et exemples =&lt;br /&gt;
&lt;br /&gt;
== Recherche simple ==&lt;br /&gt;
&amp;lt;pre&amp;gt;import re   # le module re gère les expressions régulières&lt;br /&gt;
&lt;br /&gt;
# la liste des 4 chaines à tester&lt;br /&gt;
L = [ \&lt;br /&gt;
&amp;quot;J&amp;#039;ai tout compris&amp;quot;, \&lt;br /&gt;
&amp;quot;J&amp;#039;ai rien compris&amp;quot;, \&lt;br /&gt;
&amp;quot;Fromage ou dessert&amp;quot;, \&lt;br /&gt;
&amp;quot;Tu vas où dimanche&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;ou&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient &amp;#039;ou&amp;#039; ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recherche en début de chaîne ==&lt;br /&gt;
&lt;br /&gt;
Pour rechercher une chaîne qui débute par un U majuscule&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;# la liste des 4 chaines à tester&lt;br /&gt;
L = [ \&lt;br /&gt;
&amp;quot;Un beau paysage&amp;quot;, \&lt;br /&gt;
&amp;quot;Tu comptes&amp;amp;nbsp;? Un, deux, trois...&amp;quot;, \&lt;br /&gt;
&amp;quot;une voiture rouge&amp;quot;, \&lt;br /&gt;
&amp;quot;U123456789&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;^U&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch débute par U ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recherche en fin de chaîne ==&lt;br /&gt;
&lt;br /&gt;
Pour rechercher une chaîne qui finit par un e minuscule&lt;br /&gt;
&amp;lt;pre&amp;gt;# la liste des 4 chaines à tester&lt;br /&gt;
L = [ \&lt;br /&gt;
&amp;quot;Un beau paysage&amp;quot;, \&lt;br /&gt;
&amp;quot;Tu comptes&amp;amp;nbsp;? Un, deux, trois...&amp;quot;, \&lt;br /&gt;
&amp;quot;une voiture rouge&amp;quot;, \&lt;br /&gt;
&amp;quot;U123456789&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;e$&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch termine par e...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rechercher entre deux caractères (utilisation du . ) ==&lt;br /&gt;
&lt;br /&gt;
On cherche un caractère situé entre d et t&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;# la liste des 4 chaines à tester&lt;br /&gt;
L = [ \&lt;br /&gt;
&amp;quot;Je bois du thé&amp;quot;, \&lt;br /&gt;
&amp;quot;Il apprend très vite&amp;quot;, \&lt;br /&gt;
&amp;quot;Il m&amp;#039;a dit de prendre le train&amp;quot;, \&lt;br /&gt;
&amp;quot;Nous avons pris date&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;d.t&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient un d et un t séparés par un caractère quelconque  ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recherche d&amp;#039;une chose ou d&amp;#039;une autre ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# la liste des 4 chaines à tester&lt;br /&gt;
L = [ \&lt;br /&gt;
&amp;quot;Laisse tomber&amp;amp;nbsp;!&amp;quot;, \&lt;br /&gt;
&amp;quot;Ce code respecte les bonnes pratiques&amp;quot;, \&lt;br /&gt;
&amp;quot;J&amp;#039;aime cet endroit&amp;quot;, \&lt;br /&gt;
&amp;quot;Cochez la bonne case&amp;quot; ]&lt;br /&gt;
&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;ce|se&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient ce OU se...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ignorer la casse ==&lt;br /&gt;
&lt;br /&gt;
Pour ignorer la casse avec re, on emploie en option re.IGNORECASE&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;ce&amp;#039; , ch ,  re.IGNORECASE)&amp;amp;nbsp;: # ... si la chaine ch contient ce OU Ce ou cE ou CE...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Utilisation d&amp;#039;une liste de caractères ==&lt;br /&gt;
&lt;br /&gt;
On utilise les crochets&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;s[aeiouy]t&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient une voyelle quelconque entourée par un s et un t...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Utilisation de listes de caractères préétablies ==&lt;br /&gt;
&lt;br /&gt;
On dispose des listes suivantes&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
*[a-z] &lt;br /&gt;
*[A-Z] &lt;br /&gt;
*[0-9] &lt;br /&gt;
*On peut aussi faire du [G-L] par exemple &lt;br /&gt;
*Ou même&amp;amp;nbsp;: [a-zA-Z0-9] &lt;br /&gt;
&amp;lt;pre&amp;gt;for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;^[A-Z][0-9]&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch débute par une majuscule suivie d&amp;#039;un chiffre...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Utilisation du [^] ==&lt;br /&gt;
&lt;br /&gt;
Les [] débutant par ^ signifient que la liste qui suit est composée de caractères interdits (un NOT, en gros)&lt;br /&gt;
&amp;lt;pre&amp;gt;for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;o[^i]&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient un o qui n&amp;#039;est pas suivi d&amp;#039;un i ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici, la chaîne &amp;quot;Les oiseaux volent dans le ciel&amp;quot; matche, car même si on a &amp;quot;oiseaux&amp;quot;, on a aussi &amp;quot;volent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Quantificateurs ==&lt;br /&gt;
&lt;br /&gt;
Les quantificateurs servent à déterminer le nombre d&amp;#039;occurences&amp;amp;nbsp;: pour rappel, on a&amp;amp;nbsp;:&amp;amp;nbsp;? + * et les {}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
ATTENTION&amp;amp;nbsp;: Les quantificateurs quantifient ce qui les précède et pas ce qui les suit&amp;amp;nbsp;! Il quantifient sur l&amp;#039;élément précédent, que l&amp;#039;on peut séparer par des parenthèses&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
\w\d([j-m]){5,10}&lt;br /&gt;
&lt;br /&gt;
Ici, on cherche un mot suivi d&amp;#039;un nombre, suivi d&amp;#039;une des lettres entre j et m, et cette (ces) lettre doivent apparaître entre 5 et 10 fois.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;pre&amp;gt;#Avec un&amp;amp;nbsp;?&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;\d[A-Z]?\d&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient deux chiffres encadrant une lettre majuscule au plus ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&lt;br /&gt;
&lt;br /&gt;
#Avec un +&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;\d[A-Z]+\d&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient deux chiffres séparés par une ou plusieurs majuscules ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&lt;br /&gt;
&lt;br /&gt;
#Avec un *&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;[a-z]-*\d&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient une minuscule et un chiffre séparés par zéro, un ou plusieurs tirets ...&lt;br /&gt;
       print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accolades {} ===&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;utilisation des accolades est un peu spéciale. Ici avec k un nombre quelconque&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
*{k}&amp;amp;nbsp;: on cherche k fois le pattern précédent &lt;br /&gt;
**Ja{3}J   &lt;br /&gt;
*{k,}&amp;amp;nbsp;: on cherche le pattern précédent au moins k fois &lt;br /&gt;
**Ja{1, }J&amp;amp;nbsp;: matchera JaaaaaJ ou JaJ par exemple   &lt;br /&gt;
*{,k}&amp;amp;nbsp;: on cherche le pattern auy maximum k fois &lt;br /&gt;
**Ja{,3}J matchera JaaJ mais pas JaaaaaaaJ   &lt;br /&gt;
*{k,l}&amp;amp;nbsp;: On cherche le pattern entre k et l fois&amp;amp;nbsp;: &lt;br /&gt;
**\w\d([j-m]){5,10}   &lt;br /&gt;
&amp;lt;pre&amp;gt;# la liste des 6 chaines à tester&lt;br /&gt;
L = [ \&lt;br /&gt;
&amp;quot;La référence @1@ n&amp;#039;est pas valable&amp;quot;, \&lt;br /&gt;
&amp;quot;La référence @12@ est valable&amp;quot;, \&lt;br /&gt;
&amp;quot;La référence @123@ est valable&amp;quot;, \&lt;br /&gt;
&amp;quot;La référence @1234@ est valable&amp;quot;, \&lt;br /&gt;
&amp;quot;La référence @12345@ n&amp;#039;est pas valable&amp;quot;, \&lt;br /&gt;
&amp;quot;La référence @1@2@3@ n&amp;#039;est pas valable&amp;quot;, ]&lt;br /&gt;
&lt;br /&gt;
for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
   if re.search( &amp;#039;@\d{2,4}@&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient une séquence de 2 à 4 chiffres encadrée par des @ ...&lt;br /&gt;
       print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Utilisation du point ==&lt;br /&gt;
&lt;br /&gt;
Le . est un joker, qui peut représenter n&amp;#039;importe quel caractère&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;^[A-Z].*[a-z]$&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch débute par une majuscule et termine par une minuscule.  ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .* ===&lt;br /&gt;
&lt;br /&gt;
Le joker ultime est donc .*, il matchera n&amp;#039;importe quoi, puisqu&amp;#039;il signifie&amp;amp;nbsp;: &amp;quot;N&amp;#039;importe quel caractère, n&amp;#039;importe quel nombre de fois&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Parenthèses ==&lt;br /&gt;
&lt;br /&gt;
Comme précisé plus haut, les parenthèses servent à isoler un pattern afin de lui appliquer un traitement&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;for ch in L&amp;amp;nbsp;: # Pour chaque chaine ch de la liste ...&lt;br /&gt;
    if re.search( &amp;#039;(to){2,}&amp;#039; , ch )&amp;amp;nbsp;: # ... si la chaine ch contient au moins 2 syllabes &amp;quot;to&amp;quot; successives.  ...&lt;br /&gt;
        print (ch) # ... on l&amp;#039;affiche.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= D&amp;#039;autres exemples =&lt;br /&gt;
&lt;br /&gt;
*Chercher un numéro de téléphone au format français&amp;amp;nbsp;: &amp;#039;(\d\d ){4}\d\d&amp;#039; &lt;br /&gt;
*... &lt;br /&gt;
&lt;br /&gt;
= Pièges et subtilités =&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas oublier de protéger ses caractères spéciaux, sans quoi on a des problèmes.&lt;br /&gt;
&amp;lt;pre&amp;gt; re.search( &amp;#039;iutsf\.org&amp;#039; , ad )&lt;br /&gt;
#Et pas&amp;amp;nbsp;:&lt;br /&gt;
 re.search( &amp;#039;iutsf.org&amp;#039; , ad )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Le rôle de l dans {k,l} ==&lt;br /&gt;
&lt;br /&gt;
Ici, on cherche une occurence entre k et l fois, ça matche. Avec {3,5}, ça matchera avec 3, 4, 5 fois, mais aussi avec plus&amp;amp;nbsp;! En effet, la regex matche sans se poser de question dès qu&amp;#039;elle a compté 5 occurences. {k,l} utilisé SEUL est équivalent à {k,}.&lt;br /&gt;
&lt;br /&gt;
Pour que ce soit utile, il faut que {k,l} soit encadré par d&amp;#039;autres caractères que {k,l} interdit. Par exemple, on comprend bien que \D0{3,5}\D le principe&amp;amp;nbsp;: on veut deux non-chiffres avec 3 à 5 zéros au milieu&amp;amp;nbsp;: on matchera a0000c mais pas a0000000c.&lt;br /&gt;
&lt;br /&gt;
== Chercher une chaîne qui ne contient pas un caractère ==&lt;br /&gt;
&lt;br /&gt;
On peut croire que la regexp [^r] ne matchera pas sur &amp;quot;brrrrrr&amp;quot;. Et pourtant si&amp;amp;nbsp;: On matche sur le premier b. Forcément, ce n&amp;#039;est pas un r&amp;amp;nbsp;! C&amp;#039;est toujours la même chose&amp;amp;nbsp;: la regexp ne se préoccupe pas de savoir si on fait des mots ou des phrases... Elle se fait une petite fenêtre (d&amp;#039;un seul caractère de large, en l&amp;#039;occurence) et parcours la chaîne, caractère après caractère. Dès que sa petite fenêtre contient quelque chose qui matche l&amp;#039;expression, elle s&amp;#039;arrête et nous prévient&amp;amp;nbsp;: &amp;quot;Bingo&amp;amp;nbsp;! J&amp;#039;ai trouvé un truc qui n&amp;#039;est pas un r&amp;amp;nbsp;!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Trouve une chaine sans r&amp;quot; est différent de &amp;quot;Trouve une chaine contenant autre chose que r&amp;quot;. Pour trouver les chaînes qui ne contiennent pas de r, il faut les délimiter&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;#039;^[^r]*$&amp;#039;&amp;amp;nbsp; &amp;quot;Commence et finit par n&amp;#039;importe quel nombre de choses qui ne sont pas des r&amp;quot;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;J&amp;#039;aurais tendance à faire&amp;amp;nbsp;: &amp;lt;/span&amp;gt;\s[^r]*\s pour trouver les mots sans r, mais il faut bien noter que le truc s&amp;#039;arrête au premier match sans chercher plus loin&amp;amp;nbsp;!&lt;br /&gt;
&lt;br /&gt;
== Les espaces dans les regex... ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas mettre d&amp;#039;espaces dans une regex &amp;quot;pour que ce soit plus lisible&amp;quot;. En effet, mettre un espace, c&amp;#039;est chercher un espace&amp;amp;nbsp;! Il faut tout coller. C&amp;#039;est moche, mais sinon, il va falloir échapper les espaces ( \ ) et c&amp;#039;est encore plus moche...&lt;br /&gt;
&lt;br /&gt;
= Des méthodes Python en lien avec les regex =&lt;br /&gt;
&lt;br /&gt;
== group ==&lt;br /&gt;
&lt;br /&gt;
On peut récupérer les groupes formés avec des () dans une regex pour les réutiliser, ils sont numérotés&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;import re # le module re gère les expressions régulières&lt;br /&gt;
&lt;br /&gt;
ch = &amp;quot;je suis né le 12-04-2007 à 10 heures&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# avec une regexp, on cherche la date de naissance au format jj-mm-aaaa&lt;br /&gt;
&lt;br /&gt;
retour = re.search(&amp;#039;(\d\d)-(\d\d)-(\d\d)(\d\d)&amp;#039;,ch) # récupération du résultat de la regexp dans l&amp;#039;objet retour&lt;br /&gt;
&lt;br /&gt;
print (retour.group(0))&lt;br /&gt;
    # group(0) retourne la correspondance complète, c&amp;#039;est à dire la date 12-04-2007&lt;br /&gt;
&lt;br /&gt;
print (retour.group(1))&lt;br /&gt;
    # group(1) retourne le premier groupe, c&amp;#039;est à dire le jour&amp;amp;nbsp;: 12&lt;br /&gt;
&lt;br /&gt;
print (retour.group(2))&lt;br /&gt;
    # group(2) retourne le deuxième groupe, c&amp;#039;est à dire le mois&amp;amp;nbsp;: 04&lt;br /&gt;
&lt;br /&gt;
print (retour.group(3))&lt;br /&gt;
    # group(3) retourne le troisième groupe, c&amp;#039;est à dire les deux premiers chiffres de l&amp;#039;année&amp;amp;nbsp;: 20&lt;br /&gt;
&lt;br /&gt;
print (retour.group(4))&lt;br /&gt;
    # group(4) retourne le quatrième groupe, c&amp;#039;est à dire les deux derniers chiffres de l&amp;#039;année&amp;amp;nbsp;: 07&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sub ==&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet de remplacer une regex par une autre dans la string .&lt;br /&gt;
&lt;br /&gt;
Usage&amp;amp;nbsp;: sub(REGEX_A_REMPLACE, REGEX_DE_REMPLACEMENT, CHAINE INITIALE)&lt;br /&gt;
&amp;lt;pre&amp;gt;import re # le module re gère les expressions régulières&lt;br /&gt;
&lt;br /&gt;
ch = &amp;quot;Il est beau ce bateau mais le capitaine chante faux.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ch2 = re.sub(&amp;#039;eau&amp;#039;,&amp;#039;au&amp;#039;,ch)&lt;br /&gt;
&lt;br /&gt;
print(ch)&lt;br /&gt;
print(ch2)&lt;br /&gt;
&lt;br /&gt;
#Affiche&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
Il est beau ce bateau mais le capitaine chante faux.&lt;br /&gt;
Il est bau ce batau mais le capitaine chante faux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Détail important (mais relou) ===&lt;br /&gt;
&lt;br /&gt;
Les groupes déterminés par des () sont numérotés, même sans utiliser la méthode group... Ils sont identifiés par \1, \2 ... Mais comme ils commencent par un \, il faut l&amp;#039;échapper par un deuxième \, ce qui donne un résultat immonde comme ça&amp;amp;nbsp;: \\1, \\2...&lt;br /&gt;
&lt;br /&gt;
Par exemple, on va prendre une date avec des tirets (12-04-2007) et remplacer les tirets par des slashes (donc remplacer la date par&amp;amp;nbsp;: &amp;#039;\\1/\\2/\\3&amp;#039; )&lt;br /&gt;
&amp;lt;pre&amp;gt;import re # le module re gère les expressions régulières&lt;br /&gt;
&lt;br /&gt;
ch = &amp;quot;Je m&amp;#039;appelle Jean-Luc, je suis né le 12-04-2007 à 10 heures.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ch2 = re.sub(&amp;#039;(\d\d)-(\d\d)-(\d\d\d\d)&amp;#039;,&amp;#039;\\1/\\2/\\3&amp;#039;,ch)&lt;br /&gt;
&lt;br /&gt;
print(ch)&lt;br /&gt;
print(ch2)&lt;br /&gt;
#On a alors&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
Je m&amp;#039;appelle Jean-Luc, je suis né le 12/04/2007 à 10 heures.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nommer ses groupes ===&lt;br /&gt;
&lt;br /&gt;
On peut aussi, si vraiment c&amp;#039;est nécessaire, nommer ses groupes au lieu d&amp;#039;utiliser des numéros, en utilisant pour cela&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
*? &lt;br /&gt;
*P &lt;br /&gt;
*&amp;lt;nom du groupe&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dans l&amp;#039;expression de remplacement, on utilise \g&amp;lt;nom du groupe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On met tout ce bazar au début de la parenthèse suivi du pattern à chercher. Exemple&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;import re # le module re gère les expressions régulières&lt;br /&gt;
&lt;br /&gt;
ch = &amp;quot;Je m&amp;#039;appelle Jean-Luc, je suis né le 12-04-2007 à 10 heures.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ch2 = re.sub(&amp;#039;(?P&amp;lt;jour&amp;gt;\d\d)-(?P&amp;lt;mois&amp;gt;\d\d)-(?P&amp;lt;annee&amp;gt;\d\d\d\d)&amp;#039;,&amp;#039;\g&amp;lt;jour&amp;gt;/\g&amp;lt;mois&amp;gt;/\g&amp;lt;annee&amp;gt;&amp;#039;,ch)&lt;br /&gt;
&lt;br /&gt;
print(ch)&lt;br /&gt;
print(ch2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== findall ==&lt;br /&gt;
&lt;br /&gt;
Cette méthode renvoie toutes les occurences de la regexp rencontrées dans une string sous forme de liste.&lt;br /&gt;
&amp;lt;pre&amp;gt;import re # le module re gère les expressions régulières&lt;br /&gt;
&lt;br /&gt;
ch = &amp;quot;je suis né le 12-04-2007 à 10 heures. J&amp;#039;ai marché le 20-03-2008 et appris à nager le 30-06-2012&amp;quot;&lt;br /&gt;
&lt;br /&gt;
retour = re.findall(&amp;#039;-\d\d-&amp;#039;,ch) # récupération du résultat de la regexp dans l&amp;#039;objet retour&lt;br /&gt;
   # avec findall, on récupère la liste de toutes les occurrences du motif &amp;#039;-\d\d-&amp;#039;&lt;br /&gt;
&lt;br /&gt;
print (retour) # affichage de toutes les occurrences&lt;br /&gt;
&lt;br /&gt;
#Affiche&amp;amp;nbsp;: &lt;br /&gt;
&lt;br /&gt;
[&amp;#039;-04-&amp;#039;, &amp;#039;-03-&amp;#039;, &amp;#039;-06-&amp;#039;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== compile ==&lt;br /&gt;
&lt;br /&gt;
On peut compiler une regex pour l&amp;#039;utiliser plusieurs fois. C&amp;#039;est utile quand on doit s&amp;#039;en resservir&amp;amp;nbsp;:&lt;br /&gt;
&amp;lt;pre&amp;gt;chn_mdp = r&amp;quot;^[A-Za-z0-9]{6,}$&amp;quot;&lt;br /&gt;
exp_mdp = re.compile(chn_mdp)&lt;br /&gt;
mot_de_passe = &amp;quot;&amp;quot;&lt;br /&gt;
while exp_mdp.search(mot_de_passe) is None:&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; mot_de_passe = input(&amp;quot;Tapez votre mot de passe&amp;amp;nbsp;: &amp;quot;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ici l&amp;#039;encodage r&amp;quot;&amp;quot; signifie &amp;quot;raw&amp;quot;&amp;amp;nbsp;: on passe la chaîne brute, sans y interpréter quoi que ce soit&amp;amp;nbsp;: python ne cherche pas à interpréter les \ ou quoi, il prend la chaîne et la passe directement à re.search.&lt;/div&gt;</summary>
		<author><name>Justine</name></author>
	</entry>
</feed>