[ruby-de] RegEx

Christian P christian.paling at googlemail.com
Mo Aug 28 20:27:07 JST 2017


Hi!

Man kann den "greedy operator“ in einen "lazy operator“ umwandeln, indem man nach dem "+“ noch ein "?“ anhängt. Das liefert dann das gewünschte Ergebnis.

if a.match /PointEst="(.+?)“/
    @point_estimate = $1
end

Siehe dazu auch hier: https://stackoverflow.com/questions/2301285/what-do-lazy-and-greedy-mean-in-the-context-of-regular-expressions <https://stackoverflow.com/questions/2301285/what-do-lazy-and-greedy-mean-in-the-context-of-regular-expressions>

Viele Grüße

> Am 28.08.2017 um 13:20 schrieb Pd Dzaic <pddzaic at gmail.com>:
> 
> Hallo zusammen
> 
> Anbei habe ich den Auszug einer Datei angehängt, die ich gerne parsen und
> deren Inhalt in von mir erzeugte Objekte einfügen möchte. Ich weiss nicht,
> ob nokogiri das richtige Werkzeug wäre, sodass ich es erst einm "manuell"
> probiere. Nehmen wir Beispielsweise folgenden Zeilenaisschnitt:
> 
> <Results PointEst="0.00261923926882446" Mean="0.00260549806989729"
> MeanHigh="0.002916131" MeanLow="0.002294865" Pct95="0.00938510149717331"
> Pct95High="0.01138707" Pct95Low="0.0076281" Pct5="0.000308111077174544"
> Pct5High="0.0003357831" Pct5Low="0.0002913048" Median="0.00125825370196253"
> MedianHigh="0.00134209" MedianLow="0.001182895"
> StdDev="0.00501187797635794" Skewness="7.728384" Kurtosis="84.44475"
> SamplesAt10pct="1421" SamplesAt2pct="35536" ErrorFactor="5.519069">
> 
> Nun möchte ich beispielsweise in meine Variable @point_estimate den Wert
> einlesen. Dazu bediene ich mich einer Regex, dachte ich mir. Sie obiger
> Text der Inhalt der Variablen a, dann folgt:
> 
> if a.match /PointEst="(.+)"/
>  @point_estimate = $1
> end
> 
> Leider funktioniert es so nicht, da mir der .+ (der Greedy-Operator wie ich
> mittlerweile erfahren habe) alles bis zum letzten Anführungszeichen aus dem
> String herausholt. Das ist auch kein Fehler, da der Greedy-Operator das
> wohl macht. ich hingegen möchte jedoch, dass schon nach dem ersten
> Anführungszeichen abgebrochen wird.
> 
> Hat jemand eine Idee?
> 
> Bin für andere Vorschläge auch offen.
> 
> Gruss,
> 
> Pere
> <test.txt>



Mehr Informationen über die Mailingliste ruby-de