AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Regulärer Ausdruck für natürliche Zahlen
Thema durchsuchen
Ansicht
Themen-Optionen

Regulärer Ausdruck für natürliche Zahlen

Ein Thema von Jakob Ullmann · begonnen am 23. Okt 2008 · letzter Beitrag vom 23. Okt 2008
Antwort Antwort
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#1

Regulärer Ausdruck für natürliche Zahlen

  Alt 23. Okt 2008, 12:54
Hallo,

ich bräuchte einen regulären Ausdruck (PCRE) für natürliche Zahlen, in denen also kein Komma vorkommt. also dass wirklich nur natürliche Zahlen herausgesucht werden. Momentan hab ich verschiedene Dinge probiert und es sieht so aus:

(\d*)[\.]{0} Das Problem liegt scheinbar daran, dass der Teil [\.]{0} falsch ist. Aber wie kann man das richtig machen? Hat jemand eine Idee? (Komma ist hier der Punkt, nicht das Komma.)

EDIT: Ich meine nicht, dass ein String eine natürliche Zahl ist, sondern dass in einem String eine natürliche Zahl vorkommt.
Jakob
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Regulärer Ausdruck für natürliche Zahlen

  Alt 23. Okt 2008, 13:05
ehm. Ganz habe ich die Aufgabenstellung wohl noch nicht verstanden.

\d+ erlaubt eine Reihe an Ziffern: 0 bis 32784873214687213461872348723164823176423187648326 4816243668 ist alles möglich

\d+(,\d+)? erlaubt Ziffern mit optionalem Komma - aber wenn ein Komma da ist, muss es mindestens eine Ziffer nach dem Komma geben.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Alloc

Registriert seit: 18. Apr 2005
Ort: Griesheim
167 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Regulärer Ausdruck für natürliche Zahlen

  Alt 23. Okt 2008, 13:13
Hi,

Zitat von Jakob Ullmann:
Hallo,

ich bräuchte einen regulären Ausdruck (PCRE) für natürliche Zahlen, in denen also kein Komma vorkommt. also dass wirklich nur natürliche Zahlen herausgesucht werden. Momentan hab ich verschiedene Dinge probiert und es sieht so aus:

(\d*)[\.]{0}
Wenn ich das richtig verstehe, hast du also schon das auslesen der Zahl und willst jetzt nur noch verhindern, dass auch Zahlen gefunden werden, die eigentlich ein Komma haben?

Wenn ja, würde ich sowas denken:
(\d*)[^\.]+ Grüße,
Chris
Christian Illy
ONI2.net, basicly every important link about Oni.
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#4

Re: Regulärer Ausdruck für natürliche Zahlen

  Alt 23. Okt 2008, 13:26
Funktioniert irgendwie nicht. Also ich hab es so:

Delphi-Quellcode:
      RE.Expression := '(\d*)[^\.]+';
      expression := RE.Replace(expression, '$1.', True);
Da wird 30 durch 3 ersetzt, bei einstelligen Zahlen kommen ganz verrückte Dinge heraus...

Habs jetzt dirty gelöst, indem ich das sozusagen für Zahlen verschiedener Anzahl an Vorkomma- und Dezimalstellen einzeln betrachte. Allerdings würde mich trotzdem noch interessieren, wie eine saubere Lösung aussieht (dass der Zusammenhang klar wird: Jede nat. Zahl soll durch eine Dezimalzahl mit dem gleichen Wert ersetzt werden, also 1 durch 1. oder 1.0. Wegen PascalScript ).

@Daniel: Problem ist halt, dass die PascalScript bei 3/2 1 herausbekommt, deshalb möchte ich das so ersetzen, dass dann 3./2. da steht (3. = 3.0 und 2. = 2.0), damit die PascalScript 1.5 herausbekommt.
Jakob
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Regulärer Ausdruck für natürliche Zahlen

  Alt 23. Okt 2008, 13:28
Ausdruck:
Code:
"(?<!\.)(?>(\d+))(?!\.)
Erklärung: beliebig viele Digits, die weder einen Punkt vor noch nach sich haben (Lookahead, -behind). Das (?>) ist eine atomic group, die dafür sorgt, dass in \d+ nicht nochmals eingetreten wird - wäre die Gruppe nicht atomar, würde "123.4" durch "12.3.4" ersetzt werden.
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#6

Re: Regulärer Ausdruck für natürliche Zahlen

  Alt 23. Okt 2008, 21:53
Puh, ich glaube bei dem Anblick sollte ich meine PCRE-Kennnis noch einmal auffrischen. Dank dir!
Jakob
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz