Ciao a tutti,
avrei bisogno di utilizzare una regular expression che mi trasformi la stringa "ABC_20081008120130_DEF" in "ABC_DEF".
Potete darmi qualche idea?
Grazie mille
Ciao a tutti,
avrei bisogno di utilizzare una regular expression che mi trasformi la stringa "ABC_20081008120130_DEF" in "ABC_DEF".
Potete darmi qualche idea?
Grazie mille
E' piuttosto facile. Utilizza i due _ come delimitatori per estrarre le stringhe prima e dopo di essi.
il problema e' che la stringa e' variabile...per cui mi servirebbe un modo per eliminare tutte le 14 cifre tra i 2 _.
Ho provato con (.*)\_[0-9]{14} che elimina in effetti le 14 cifre variabili, ma elimina anche quello che c'e' dopo...quindi da ABC_20081008120130_DEF rimane solo ABC, mentre a me serve ABC_DEF.
Ti viene in mente qualcosa?
Codice PHP:
<?php
$content = "ABC_20081008120130_DEF";
$pattern = '#^(.*?)_.*?_(.*)$#si';
$replace = '$1_$2';
$content = preg_replace($pattern, $replace, $content);
print($content);
?>
Purtroppo non mi funziona...io devo utilizzare questa regex all'interno di un adaptor di un modellizzatore di flussi, per cui non e' un vero PHP.
In questo codice proprietario nell'adaptor si richiede l'extract di ABC_DEF a partire da "INFO_FILE: ABC_20081008120130_DEF". Come ti dicevo inserendo (.*)\_[0-9]{14} prendo solo ABC (senza INFO_FILE: che non mi interessa prendere), mentre inserendo la regex che mi hai suggerito mi restituisce tutto (cioe' "INFO_FILE: ABC_20081008120130_DEF").
Potresti spiegarmi brevemente la regex che mi hai scritto nei singoli elementi cosi' da cercare di trovarne una simile per il mio caso?
Grazie ancora
In futuro, invece di postare una parte della stringa su cui lavori, postala tutta.
Codice PHP:
<?php
$content = "INFO_FILE: ABC_20081008120130_DEF";
$pattern = '#INFO_FILE: (.*?)_.*?_(.*)$#si';
$replace = '$1_$2';
$content = preg_replace($pattern, $replace, $content);
print($content);
?>