[regex] Automatic Match Variables
Salut tout le monde,
J ai un petit probleme avec les variables: $&, $` et $'.
j ai une structure xml comme ca:
Code:
1 2 3 4
|
<Layer>
<Signal>ACLN_LN_RWDT / ACLN_LN_OFFS</Signal>
</Layer> |
je veux avoir une structure comme ca:
Code:
1 2 3 4 5 6
|
<Layer>
<Signal>ACLN_LN_RWDT</Signal>
<Signals_operator>/</Signal_operator>
<Signal>ACLN_LN_OFFS</Signal>
</Layer> |
alors le premier signal dans un tag ensuite un tag pour l operateur(+, -, / etc..) et un tag pour le deusieme operateur.
j ai ecris ce morceau de code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
my @nodes1 = $root1->get_xpath('//Layer');
for my $node1 (@nodes1){
foreach my $nodes ($node1->children) {
if(($nodes->gi =~ /Signal$/)){
if($nodes->text =~ /[\/\+\%\-\&\&&\|\*\||\ \t\n\f\r]/){
$writer->startTag('Signal');
$writer->characters($`);
$writer->endTag('Signal');
$writer->startTag('Signals_operator');
$writer->characters($&);
$writer->endTag('Signals_operator');
$writer->startTag('Signal');
$writer->characters($');
$writer->endTag('Signal');
}
else{
$writer->startTag('Signal');
$writer->characters($nodes->text);
$writer->endTag('Signal');}
}} |
mon probleme c est que j obtiens ce resultat:
Code:
1 2 3 4
|
<Signal>ACLN_LN_RWDT</Name>
<Signals_operator> </Signals_operator>
<Signal>/ ACLN_LN_OFFS</Name> |
comme vous le constatez l operateur est dans le tag du 2eme signal et le signal_operator tag contient un espace!
ca serait tres gentil de m aider un peu
Merci!