\d+\.?\d*|\.\d+(?=\s*ch)
angewendet auf "sta.23.5 .1 Wörter 67.89 CH" erfasst 23,5 zuerst, weil es übereinstimmt \d+\.?\d*
Das oder "|" Hat die höchste Vorrang, wenn Sie sich so vorstellen möchten, und das Muster in zwei mögliche Übereinstimmungen aufteilt: \d+\.?\d*
und \.\d+(?=\s*ch)
Wenn Sie verhindern möchten \d+\.?d*
Ab dem Matching 23.5 müssten Sie zusätzliche Kriterien hinzufügen, z. \s(\d+\.?\d*)
Sie könnten beide mit diesem Muster übereinstimmen, \s(\d+\.?\d*)|\.\d+(?=\s*ch)
, Aber denken Sie daran, dass Sie, wenn die erste Halbzeit übereinstimmt, die Untermatches für den tatsächlichen Wert betrachten.
Das eigentliche Problem dabei ist, dass die Regexp -Klasse von VBSCIPT LookBehind, nur Lookahead, nicht unterstützt.