首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用regex搜索特定文件

使用regex搜索特定文件
EN

Stack Overflow用户
提问于 2016-12-20 12:12:54
回答 1查看 52关注 0票数 1

我试图在文件夹中的文件名中捕获两个特定的单词/字符序列。到目前为止,我在https://regex101.com/上提供了正确的输出,但在我正在使用的脚本中没有提供正确的输出。

这是我正在处理的文件名的类型:

代码语言:javascript
运行
复制
Bjørn Stallaresvei s 10013.pdf

代码语言:javascript
运行
复制
Københavngaten 1 L. 8.pdf

这就是我到目前为止想出的准则:

代码语言:javascript
运行
复制
((?<=\s)[a-zA-Z\.]+(?=[\s0-9]+\.pdf))|((?<=\s)[0-9]+(?=.pdf))

我试图在第一行's‘和' 10013’中捕获,其中's‘是标识符,10013是ID。

在第二行中,L是标识符,8是ID。

这只是一个示例代码,可以显示:

代码语言:javascript
运行
复制
import re

string_1 = "Stallaresvei s 10013.pdf"

regexp = r"(((?<=\s)[a-zA-Z\.]+(?=[\s0-9]+\.pdf))|((?<=\s)[0-9]+(?=.pdf)))"
m = re.search(regexp, string_1)

print(m)

输出只显示找到的一个匹配:

代码语言:javascript
运行
复制
<_sre.SRE_Match object; span=(13, 14), match='s'>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-20 12:17:20

您可以删除捕获括号,并在re.findall中使用正则表达式。

代码语言:javascript
运行
复制
r'(?<=\s)[a-zA-Z.]+(?=[\s0-9]+\.pdf)|(?<=\s)[0-9]+(?=\.pdf)'

在线Python 3演示

代码语言:javascript
运行
复制
import re
string_1 = "Stallaresvei s 10013.pdf"
regexp = r"(?<=\s)[a-zA-Z.]+(?=[\s0-9]+\.pdf)|(?<=\s)[0-9]+(?=\.pdf)"
m = re.findall(regexp, string_1)
print(m) # => ['s', '10013']

另一种方法是重写模式并将这些位捕获成两个组,请参阅另一个演示

代码语言:javascript
运行
复制
import re
string_1 = "Stallaresvei s 10013.pdf"
regexp = r"\s([a-zA-Z.]+)\s+([0-9]+)\.pdf"
m = re.search(regexp, string_1)
if m:
    print([m.group(1), m.group(2)])

这里,

  • \s -匹配空格
  • ([a-zA-Z.]+) -捕获组1匹配1+ ASCII字母或.
  • \s+ - 1+白空间
  • ([0-9]+) -捕获组2匹配1+ ASCII位数
  • \.pdf -只匹配.pdf子字符串。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41242105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档