Home > Back-end >  Looking for a regex to find long filenames in a text file
Looking for a regex to find long filenames in a text file

Time:12-27

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

  1. ^ and $ mark the start and the end of the line respectively
  2. . matches one or more characters (except line terminators)

Demo

  • Related