简体   繁体   English

寻找正则表达式以在文本文件中查找长文件名

[英]Looking for a regex to find long filenames in a text file

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'] ['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:我期待这 4 个文件名:

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.但我是 regex 的新手,虽然我在 regex101 这样的网站上进行过测试,但我真的不知道我在这里做什么。

to support spaces you should add a space to your regex like that:要支持空格,您应该像这样在正则表达式中添加一个空格:

r"([a-zA-Z0-9 _-]+.\.(?:jpg|jpeg|png|gif))"

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演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM