Skip to main content
 首页 » 编程设计

python之如何使用正则表达式 python 部分搜索单词

2024年08月15日35kerrycode

我想获取某处包含“反馈报告”的所有“xlsx”文件。我想让这个过滤器非常强大。因此,任何部分匹配,如“feedback_report”、“feedback report”、“Feedback Report”都应返回 true。

示例文件名:

  1. ZSS Project_JKIAL-SA_FEEDBACK_REPORT_Jan 29th 2015.xlsx
  2. ZL-SA_feedback report_012844.xlsx
  3. ASARanem-SA_Feedback Report_012844.xlsx

下面是徒劳的尝试。

regex = re.compile(r"[a-zA-Z0-0]*[fF][eE][eE][dD][bB][aA][cC][kK]\s[rR][eE][pP][oO][rR][tT][a-zA-Z0-0]*.xlsx") 

请您参考如下方法:

这会起作用:

re.search("(feedback)(.*?|\s)(report)",string,re.IGNORECASE) 

使用代码在以下输入列表上对其进行了测试

import re 
a=["ZSS Project_JKIAL-SA_FEEDBACK_REPORT_Jan 29th 2015.xlsx", 
"ZL-SA_feedback report_012844.xlsx", 
"ASARanem-SA_Feedback Report_012844.xlsx", 
"some report", 
"feedback-report"] 
 
for i in a: 
    print(re.search("(feedback)(.*?|\s)(report)",i,re.IGNORECASE)) 

OP 预期的输出是:

<_sre.SRE_Match object; span=(21, 36), match='FEEDBACK_REPORT'> 
<_sre.SRE_Match object; span=(6, 21), match='feedback report'> 
<_sre.SRE_Match object; span=(12, 27), match='Feedback Report'> 
None 
<_sre.SRE_Match object; span=(0, 15), match='feedback-report'>