PHP RegEx Partita alla fine della stringa

Ancora imparando PHP Regex e ho una domanda.

Se la mia stringa è

Size : 93743 bytes Time elapsed (hh:mm:ss.ms): 00:00:00.156

Come faccio a corrispondere il valore che viene visualizzato dopo il (hh:mm:ss.ms):?

00:00:00.156

So come si corrispondono se ci sono più caratteri che seguono il valore, ma non ci sono più caratteri dopo, e non voglio includere la dimensione delle informazioni.

Grazie in anticipo!

InformationsquelleAutor Dave Kiss | 2010-10-19



2 Replies
  1. 8

    In questo modo:

    <?php
    $text = "Size : 93743 bytes Time elapsed (hh:mm:ss.ms): 00:00:00.156";
    
    # match literal '(' followed by 'hh:mm:ss.ms' followed by literal ')'
    # then ':' then zero or more whitespace characters ('\s')
    # then, capture one or more characters in the group 0-9, '.', and ':'
    # finally, eat zero or more whitespace characters and an end of line ('$')
    if (preg_match('/\(hh:mm:ss.ms\):\s*([0-9.:]+)\s*$/', $text, $matches)) {
        echo "captured: {$matches[1]}\n";
    }
    ?>

    Questo dà:

    captured: 00:00:00.156
  2. 0

    $ ancore le regex per la fine della stringa:

    <?php
    $str = "Size : 93743 bytes Time elapsed (hh:mm:ss.ms): 00:00:00.156";
    
    $matches = array();
    
    if (preg_match('/\d\d:\d\d:\d\d\.\d\d\d$/', $str, $matches)) {
      var_dump($matches[0]);
    }

    Di uscita:

    string(12) "00:00:00.156"
    • come circa 00:00:00:1 o 00:00:00:22?
    • Domanda non indicano che una di queste sono gli ingressi possibili; presumo che il formato sarebbe ...00:100 e ...00:220 in quei casi.
    • Questo ancora non funziona, non è sicuro se c’è un qualche tipo di spazio in più dopo la stringa o cosa… e sì, il formato dovrebbe essere ...00:100 – è che dire $ racconta la preg_match che si dovrebbe smettere di guardare a quel punto, o continuare fino alla fine della stringa? Penso che ho bisogno di qualcosa che dice di interrompere la partita dopo l’ultimo \d

Lascia un commento