[ruby-de] RegEx

Pd Dzaic pddzaic at gmail.com
Mo Aug 28 20:20:24 JST 2017


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
-------------- nächster Teil --------------
<Uncert SampleType="Simple">
  <Options Samples="1000" SampleMethod="MonteCarlo" ImportanceUncertainty="1" Initiators="1" CCFGroups="1" HEPs="1" TypeCodes="1" Other="1" />
  <Files>
    <ModuleFile />
    <ReliabilityDatabase Filename="C:\Users\PED\Documents\UNCERT\Demo\epuncert.rr" />
    <CutsetFile Filename="C:\Users\PED\Documents\UNCERT\Demo\EP.CUT">
      <Module>EDC125</Module>
    </CutsetFile>
  </Files>
  <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">
    <Bins>
      <Bin Number="1" Min="9.7E-05" Max="0.000125337502466989" Bar="0.184695057020595" Count="4" Percent="0.4" CPF="0.004" />
      <Bin Number="2" Min="0.000125337502466989" Max="0.000161953500254251" Bar="0" Count="0" Percent="0" CPF="0.004" />
      <Bin Number="3" Min="0.000161953500254251" Max="0.000209266466367574" Bar="0.248896727341258" Count="9" Percent="0.9" CPF="0.013" />
      <Bin Number="26" Min="0.0588171924196562" Max="0.076" Bar="0.000152297481348417" Count="2" Percent="0.2" CPF="1" />
    </Bins>
    <GraphData Steps="1000" TopValue="9.744066E-05">
      <Point X="9.744066E-05" Y="0.001" />
      <Point X="0.06052405" Y="0.999" />
    </GraphData>
    <Importances>
      <ImportanceEvent Birn95="0.00018799677491188" BirnMean="4.15354079450481E-05" Birn5="9.17789293453097E-07" Raw95="1.02677237987518" RawMean="1.01058971881866" Raw5="1.00103175640106" FV95="2.68741314357612E-06" FVMean="1.16080218504067E-06" FV5="9.94112099306221E-08" BasicEvent="CCBCCFCCT12" />
      <ImportanceEvent Birn95="0.00018799677491188" BirnMean="4.15354079450481E-05" Birn5="9.17789293453097E-07" Raw95="1.02677297592163" RawMean="1.01166462898254" Raw5="1.00103282928467" FV95="2.70029499915836E-06" FVMean="1.16823218831996E-06" FV5="9.99085116859533E-08" BasicEvent="CCBCCFCCT13" />
    </Importances>
    <Warnings>
    </Warnings>
  </Results>
</Uncert>


Mehr Informationen über die Mailingliste ruby-de