Einstellige Zahlen im Dateinamen finden

Angerfist7612

Banned
Registriert
Juni 2008
Beiträge
194
Hallo,

welche RegEx muss ich benutzen um einstellige Zahlen im Dateinamen zu finden? ^\d\. findet nur 1-9 wenn sonst nichts weiter beisteht. Was benutze ich wenn der Dateiname z.B. foto-1 oder 1-foto oder andere Variablen die immer eine Zahl 1-9 enthält?
 
Du kannst z.B. noch wildcards einbauen: ^.*\d.*$

das findet dann alles mit einer einstelligen Zahl, z.B.: foto-1-asd, 1-dfg, ....

Natürlich kannst du dir auch noch Gruppen anlegen: ^(.*)(\d)(.*)$, damit könntest du dir dann auch die Zahl ausgeben lassen, die in den Dateinamen vorgekommen ist z.B. mit $1.

Zum rumspielen hast du hier noch einen Seite die dir eventuelle Fehler ausgibt und die Treffer deiner Suche anzeigt: https://regex101.com
 
blablub1212 schrieb:
Du kannst z.B. noch wildcards einbauen: ^.*\d.*
Und das bringt was? 91827398213 matcht hierbei genauso.

@ TE:
Nimm \D\d\D. Zu deutsch: keine Ziffer, Ziffer, keine Ziffer.
 
Yuuri schrieb:
@ TE:
Nimm \D\d\D. Zu deutsch: keine Ziffer, Ziffer, keine Ziffer.

Da fehlt noch Anfang und Ende.

Keine Ziffer oder Anfang der Kette gefolgt von einer Ziffer gefolgt von keiner Ziffer oder Ende der Kette:
Code:
(?:\D|^)(\d)(?:\D|$)
 
Zuletzt bearbeitet: (einstellige Zahl erfassen)
Mein Lösungsvorschlag (konnte es nicht testen)

(\A\d\D+)|(\D+\d\D+)

Entweder Digit(1) Non-Digits(1 oder mehr) ODER
Non-Digits(1 oder mehr) Digit(1) Non-Digits(1 oder mehr)

Edit: Mit python getestet
Code:
import re

images = ["foto-1a.jpg", "foto-1.jpg", "foto-12.jpg", "1-foto.jpg", "12-foto.jpg"]
for img in images:
	filename = re.match(r"(\A\d\D+)|(\D+\d\D+)",img)
	if filename:
		print(filename.string)

Ausgabe:
Code:
foto-1a.jpg
foto-1.jpg
1-foto.jpg
 
Zuletzt bearbeitet:
Zurück
Oben