$re = '/fmc="(.*?)".*?<part.*?>(.*?)</part>/ms';
$str = '<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
<corpus>
<ver id="18" etude="EC1_Elec" elec="oui" niveau="1" critere="1.3" type="discours">
<part code="EC1_Elec_IW04_0">Ça existe sur des gros parcs Hlm mais c\'est macro.</part>
</ver>
<ver id="30" etude="EC1_Elec" elec="oui" niveau="2" critere="" origine="IW" type="discours" fmc="motives">
<part code="EC1_Elec_IW01_0">Avant 75 on n\'a pas isolé puis après, au fur et à mesure des règlementations.</part>
</ver>
<ver id="54" etude="EC1_Elec" elec="oui" niveau="1" critere="" origine="IW" type="discours" fmc="condition">
<part code="EC1_Elec_IW10_0">Le deuxième boitier, il est où ? s\'il y en a un qui est à l\'intérieur et qui remplace un bout de l\'isolation, il est caché OK.</part>
</ver>
<ver id="897" etude="EC3_Elec" elec="oui" niveau="4" critere="4.1" origine="TR" type="discours" fmc="obstacle">
<part code="EC3_Elec_TR2_1">Avec l\'économie d\'énergie, on va imposer de plus en plus d\'automatismes,</part>
<iwer>Çava influencer la demande pour ce type de solution c\'est ça ?</iwer>
<part code="EC3_Elec_TR2_1">Je pense oui</part>
</ver>
</corpus>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php