none
regex-Ergebnis RRS feed

  • Frage

  • Hallo,

    ich suche mit regex nach Wortteilen in einem String. Gibt es eine Möglichkeit die Anzahl der Zeichen zwischen den Suchergebnissen auszugeben?

    Gruß

    Armin

    Freitag, 8. Juli 2011 10:55

Antworten

  • Sicher:

    $string = "dies ist ein string"
    $regex = [regex]"in"
    $matches = $regex.matches($string)
    


    liefert dir z.b.:

    Groups   : {in}
    Success  : True
    Captures : {in}
    Index    : 10
    Length   : 2
    Value    : in

    Groups   : {in}
    Success  : True
    Captures : {in}
    Index    : 16
    Length   : 2
    Value    : in

    Damit kannst du die Zeichen dazwischen berechnen. Hier ein ausführliches Beispiel:

    $string = "Dies ist ein string und in diesem kommt in einige Male vor."
    $regex = [regex]"in"
    $matches = $regex.matches($string)
    Foreach ($match in $matches){
       
       "Fund nach Zeichen " + $match.index + " mit Länge " + $match.length
       
       if (!($match.NextMatch().success)) { "Kein weiterer Fund" ; break } 
      
      "(Nächster Fund nach Zeichen " + $match.NextMatch().Index + ")"
      "Dazwischen sind "+ ($match.NextMatch().Index - ($match.index + $match.length)) + " Zeichen" + "`n`r" 
        
    }
    

    Grüße, Denniver

     

     

     


    http://bytecookie.wordpress.com/
    • Als Antwort markiert AucheinName Montag, 11. Juli 2011 08:38
    Freitag, 8. Juli 2011 15:02
    Moderator

Alle Antworten

  • Sicher:

    $string = "dies ist ein string"
    $regex = [regex]"in"
    $matches = $regex.matches($string)
    


    liefert dir z.b.:

    Groups   : {in}
    Success  : True
    Captures : {in}
    Index    : 10
    Length   : 2
    Value    : in

    Groups   : {in}
    Success  : True
    Captures : {in}
    Index    : 16
    Length   : 2
    Value    : in

    Damit kannst du die Zeichen dazwischen berechnen. Hier ein ausführliches Beispiel:

    $string = "Dies ist ein string und in diesem kommt in einige Male vor."
    $regex = [regex]"in"
    $matches = $regex.matches($string)
    Foreach ($match in $matches){
       
       "Fund nach Zeichen " + $match.index + " mit Länge " + $match.length
       
       if (!($match.NextMatch().success)) { "Kein weiterer Fund" ; break } 
      
      "(Nächster Fund nach Zeichen " + $match.NextMatch().Index + ")"
      "Dazwischen sind "+ ($match.NextMatch().Index - ($match.index + $match.length)) + " Zeichen" + "`n`r" 
        
    }
    

    Grüße, Denniver

     

     

     


    http://bytecookie.wordpress.com/
    • Als Antwort markiert AucheinName Montag, 11. Juli 2011 08:38
    Freitag, 8. Juli 2011 15:02
    Moderator
  • Hallo Denniver,

    wie immer perfekt.

    Vielen Dank

    Armin

    Montag, 11. Juli 2011 08:38