I'm using a regex to find filenames in a text, but it's failing on filenames with spaces.
This is the regex pattern:
pattern = r"([a-zA-Z0-9_-] \.(?:jpg|jpeg|png|gif))"
when run on the text (see below) it only detects the last part of the filenames only:
['NL-RtSA_999-09_1955B3_0041.jpg', '21-11-1955.jpg', 'voorzijde.png', 'achterzijde.png']
This is the text it's scanning on:
0007 Willem Oliemans x Jannigje de Jong
0076 Willem Oliemans 19-01-1901 - BS Rotterdam - Overlijden 21-11-1955 - NL-RtSA_999-09_1955B3_0041.jpg
0076 Willem Oliemans 19-01-1901 - BS Rotterdam - Overlijden 21-11-1955.jpg
https://stadsarchief.rotterdam.nl/zoek-en-ontdek/archieven/zoekrestultaat-archieven/?mivast=184&miadt=184&miaet=54&micode=999-09.1955B3&minr=20800725&miview=ldt
https://www.openarch.nl/srt:c2bfa32b-d519-eb8a-c77e-e867d317998f
Gebeurtenis: Overlijden op 21 november 1955 te Rotterdam
Personen:
- Overledene > Willem Oliemans
- Vader > Jacobus Pieter Oliemans
- Moeder > Catharina Wilhelmina Duindam
- Eerder overleden echtgeno(o)t(e) > Jannigje de Jong
Bron: Stadsarchief Rotterdam, Rotterdam, BS Overlijden.
Nadere toegang op het overlijdensregister van de gemeente Rotterdam, Rotterdam, archiefnummer 999-09, inventarisnummer 1955B3, 1 januari 1955, aktenummer 1955.2389, folio b3-040v
Event: Death on 21 November 1955 in Rotterdam
Persons:
- Deceased > Willem Oliemans
- Father > Jacobus Pieter Oliemans
- Mother > Catharina Wilhelmina Duindam
- Eerder overleden echtgeno(o)t(e) > Jannigje de Jong
Source: Stadsarchief Rotterdam, Rotterdam, BS Overlijden
Nadere toegang op het overlijdensregister van de gemeente Rotterdam, Rotterdam, archive number 999-09, inventory number 1955B3, 1 January 1955, record number 1955.2389, folio b3-040v
0007 Willem Oliemans x Jannigje de Jong - 19-12-1901 - BR Rotterdam - Gezinskaart - 1 voorzijde.png
0007 Willem Oliemans x Jannigje de Jong - 19-12-1901 - BR Rotterdam - Gezinskaart - 2 achterzijde.png
0034 Jannigje de Jong 13-09-1910 - Gezinskaart Rotterdam - 1 voorzijde -
0034 Jannigje de Jong 13-09-1910 - Gezinskaart Rotterdam - 2 achterzijde -
I'm expecting these 4 filenames:
0076 Willem Oliemans 19-01-1901 - BS Rotterdam - Overlijden 21-11-1955 - NL-RtSA_999-09_1955B3_0041.jpg
0076 Willem Oliemans 19-01-1901 - BS Rotterdam - Overlijden 21-11-1955.jpg
0007 Willem Oliemans x Jannigje de Jong - 19-12-1901 - BR Rotterdam - Gezinskaart - 1 voorzijde.png
0007 Willem Oliemans x Jannigje de Jong - 19-12-1901 - BR Rotterdam - Gezinskaart - 2 achterzijde.png
I have tried several other regex but these didn't even detect a filename, like this one:
pattern = r'^[^\s] \.(jpg|jpeg|png|gif)$'
But I'm a total newbie at regex and while I have tested on a site like regex101, I really do not know what I am doing here.
CodePudding user response:
to support spaces you should add a space to your regex like that:
r"([a-zA-Z0-9 _-] .\.(?:jpg|jpeg|png|gif))"
CodePudding user response:
You can use this pattern:
^. \.(?:jpg|jpeg|png|gif)$ /gm
^
and$
mark the start and the end of the line respectively.
matches one or more characters (except line terminators)