use strict;
my $str = 'REGEX_1 =(avec|(partie|à usage|compos[ée]) de|(possibilit[eé]|zone|espace)(\\sde)?) bureaux?
REGEX_2 =\\d*((\\s)?(m²|m|M)) de bureaux?|bureaux? d\'une surface de \\d*((\\s)?(m²|m|M))|bureaux? de \\d*((\\s)?(m²|m|M))
REGEX_3 =bureaux? (à l\'[eé]tage|[ée]quip[ée]s?|cloisonn[ée]s)
REGEX_2NOT =
(proche de bureaux?|
bureaux? proche|
bureaux? [àa] proximit[eé]|
[àa] proximit[eé] de bureaux?)
[EXEMPLE]
avec bureau
à usage de bureaux
composé de bureau
d\'activites & bureaux
activités/bureaux
une partie de bureau
et bureau
et de bureau
12m² de bureaux
de bureaux de 12m²
bureaux d\'une surface de 12m²
bureaux à l\'étage
bureaux équipés
zone bureau
bureaux cloisonnés
possibilité de bureau
espace bureau
[NE PAS TENIR COMPTE]
bureaux proche
bureaux à proximité
à proximité de bureau';
my $regex = qr/\d*((\s)?(m²|m|M)) de bureaux?|bureaux? d'une surface de \d*((\s)?(m²|m|M))|bureaux? de \d*((\s)?(m²|m|M))/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
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 Perl, please visit: http://perldoc.perl.org/perlre.html