Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Mit Regular Expression nach einer Zahlenfolge suchen

Mitglied: Codehunter

Codehunter (Level 2) - Jetzt verbinden

14.07.2009, aktualisiert 18.10.2012, 8467 Aufrufe, 7 Kommentare

Hallo allerseits,

ich möchte mit preg_match einen String auseinander nehmen. In dem String kommen neben diversen alphanumerischen Zeichen auch mehrere Zahlenfolgen vor. Eine dieser Zahlenfolgen hat mindestens 12 Stellen (oder mehr) und wird von je einem beliebigen nicht-numerischen Zeichen abgegrenzt.

Ich möchte erreichen, daß die Zahlenfolge mit mindestens 12 oder mehr Stellen durch preg_match separiert wird. Hier Beispiel-Strings:

Es konnte in 5824 Datensätzen ein Gesamtwert von 970222713953 Einheiten zu je 500 Punken ermittelt werden.
oder
Von 5824 Datensätzen mit insgesamt 970222713953 Einheiten zu je 500 Punken werden 824 ausgetragen.
Für mich von Interesse ist die Zahlenfolge 970222713953 die in den beiden Beispiel-Strings vorkommt. Das Erkennungsmerkmal ist die Länge der Zahlenfolge, die in jedem Fall >= 12 ist.

Grüße
Cody
Mitglied: Arano
15.07.2009, aktualisiert 18.10.2012
Guten Abend !

Hehe, jetzt habe ich länger für das drum herum gebraucht als für den RegEx selber ^^
01.
<?php 
02.
 
03.
echo 'Hilfe fuer Codehunter (https://www.administrator.de/forum/mit-regular-expression-nach-einer-zahlenfolge-suchen-120450.html#comment-039;;) 
04.
 
05.
/* test 1 *
06.
$str = 'Es konnte in 5824 Datensätzen ein Gesamtwert von 970222713953 Einheiten zu je 500 Punken ermittelt werden.'
07.
echo $str.'<br>Einheiten: "'.getEinheiten($str).'"<br><br>'
08.
/* return 970222713953 *
09.
 
10.
/* test 2 *
11.
$str = 'Von 5824 Datensätzen mit insgesamt 970222713953 Einheiten zu je 500 Punken werden 824 ausgetragen.'
12.
echo $str.'<br>Einheiten: "'.getEinheiten($str).'"<br><br>'
13.
/* return 970222713953 *
14.
 
15.
/* mit 10 stellen *
16.
$str = 'Von 5824 Datensätzen mit insgesamt 01234567891 Einheiten zu je 500 Punken werden 824 ausgetragen.'
17.
echo $str.'<br>Einheiten: "'.getEinheiten($str).'"<br><br>'
18.
/* return not available *
19.
 
20.
/* mit buchstaben *
21.
$str = 'Von 5824 Datensätzen mit insgesamt 970222713953d Einheiten zu je 500 Punken werden 824 ausgetragen.'
22.
echo $str.'<br>Einheiten: "'.getEinheiten($str).'"<br><br>'
23.
/* return not available *
24.
 
25.
/* mit langer zahl *
26.
$str = 'Von 5824 Datensätzen mit insgesamt 9702227139530000000000 Einheiten zu je 500 Punken werden 824 ausgetragen.'
27.
echo $str.'<br>Einheiten: "'.getEinheiten($str).'"<br><br>'
28.
/* return 9702227139530000000000 *
29.
 
30.
 
31.
function getEinheiten($str
32.
33.
    /** 
34.
     * $pattern 
35.
     * zeichenkette die mit elf zahlen beginnt, mit mindestens einer weitergeht 
36.
     * und auf ein leehrzeichen endet. den zahlenteil davon geklammert weil wir 
37.
     * das leerzeichen nicht haben moechten 
38.
     */ 
39.
    $strPattern  = '/([0-9]{11}[0-9]+) /'
40.
    $arrHits     = array(); 
41.
    $boolFound   = preg_match($strPattern,$str,$arrHits); 
42.
    if(FALSE == $boolFound
43.
        return 'not available'
44.
    return $arrHits[1]; 
45.
    /** 
46.
     * $arrHits[0] = '123456789123 ' // gesamter ausdruck (mit leerzeichen) 
47.
     * $arrHits[1] = '123456789123'  // erster teilausdruck (erste klammer [ohne leerzeichen]) 
48.
     */ 
49.
50.
 
51.
?>

Gute Nacht
~Arano
Bitte warten ..
Mitglied: Codehunter
15.07.2009 um 08:29 Uhr
Vielen Dank erstmal für deine viele Arbeit! Ich hab mir letztens erst mühsam die Syntax für die Regular Expressions beigebracht die in den .htaccess für RewriteRules verwendet wird und mußte jetzt feststellen daß PHP-intern bei den RegEx-Funktionen wieder eine andere Syntax gilt.

Wie ich Zahlen usw. definiere in einer Expression war ja auch so nicht das Problem sondern wie ich vorgebe daß es mindestens 12 aufeinanderfolgende sein müssen.

Bei deinem Beispiel gibts noch ein kleines Problemchen. Die gesuchte Zahl beginnt und endet nicht zwangsläufig mit einem Leerzeichen. Im Text kommt praktisch alles vor: Buchstaben, Klammern, Kommatas, Rauten...

Also habe ich noch ein bisschen gehirnt und die Zeile mit dem Pattern so geändert:
01.
$strPattern  = '/([0-9]{11}[0-9]+)[^\d]/';
Ich hoffe daß ich damit jetzt keine Unschärfen eingebaut habe. Was meinst du? Zumindest an deinem Testscript funktioniert es zuverlässig.
Bitte warten ..
Mitglied: nxclass
15.07.2009 um 08:57 Uhr
... sollte das nicht auch gehen !?:

01.
$strPattern  = '/([0-9]{12,})/';
Bitte warten ..
Mitglied: Codehunter
15.07.2009 um 09:04 Uhr
@nxclass: Nach dem ersten Test scheint das auch zu funktionieren.

Ich brauch unbedingt mal mehr Literatur zu RegEx. Solche Konstrukte wie "{12,}" habe ich noch nirgends gesehen...
Bitte warten ..
Mitglied: Arano
15.07.2009 um 11:19 Uhr
" Ich brauch unbedingt mal mehr Literatur zu RegEx "
http://www.regular-expressions.info/index.html

" Solche Konstrukte wie "{12,}" habe ich noch nirgends gesehen... "
http://www.regular-expressions.info/reference.html (am ende)

Hier gibts noch ich paar super CheatSheets, sehr pracktisch:
http://www.addedbytes.com/cheat-sheets/


~Arano
Bitte warten ..
Mitglied: nxclass
15.07.2009 um 20:34 Uhr
CheatSheets : Cool - sowas ist immer nützlich und RegEx ist schon fasst eine Wissenschaft für sich.
Bitte warten ..
Mitglied: Codehunter
16.07.2009 um 08:04 Uhr
Seh ich auch so... Habs mir gleich ausgedruckt und einlaminiert

Danke!
Bitte warten ..
Ähnliche Inhalte
Entwicklung

Benötige Hilfe bei Regular Expression

gelöst Frage von Thomas91Entwicklung6 Kommentare

Hallo, ich benötige hilfe bei einem Regularen Ausdruck: dieser sollte wenn möglich ohne /ig auf zwei Zeilen einen treffer ...

Entwicklung

Multiline suche in notepad++ mit hilfe von regular expressions

Frage von lksfltnEntwicklung3 Kommentare

Hallo Leute, ich muss in einem XML-Dokument nach allen überschriften suchen. Leider bekomme ich den Suchstring nicht erstellt. Kann ...

Batch & Shell

Sehr kniffliges Problem - Powershell regular expression :-(

gelöst Frage von internet2107Batch & Shell7 Kommentare

Aus einem Messgerät fließen eine bestimmte Anzahl von Daten durch Messungen. Wegen der ggf. Masse an Dateien, importieren wir ...

PHP

Regular Expressions für unsere Color-Tags: Wer kann es lösen?

gelöst Frage von FrankPHP5 Kommentare

Hi, ich benötige bei unseren Regular Expressions mal etwas Hilfe. Der Color-Code in der Textformatierung funktioniert leider nicht einwandfrei. ...

Neue Wissensbeiträge
iOS
IOS 11.2.6 verfügbar
Information von sabines vor 36 MinuteniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 14 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server37 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...