吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1124|回复: 18
收起左侧

[求助] python中正则表达式 的匹配问题,谢谢!

  [复制链接]
lengkeyu 发表于 2022-10-12 09:21
有一个列表文件docname,
里面有如下内容(格式有两种随机情况):
docname=培训教材1.doc
docname*=UTF-8''培训教材2.doc
...

如何用一个re表达式匹配以上两种情况?谢谢
(不想用两个表达式,感觉挺麻烦)
我试了下面的这个
compiler = re.compile(r'docname(\*?)=(UTF-8\'\'?)(.*)')
docname_0 = compiler.search(docname).group(3)
但是只能匹配第二种带*号的情况,与我设想的不同,不明白什么原因,我看正则表达式里面,“?”是匹配0或1次,是理解错误?谢谢!

免费评分

参与人数 1热心值 +1 收起 理由
zhaoqingdz + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

帅的惊动党 发表于 2022-10-12 09:31
docname.+\.doc

以docname开头、以.doc结尾,中间任意字符至少匹配一次
试试这个?
Sen 发表于 2022-10-12 09:33
[Python] 纯文本查看 复制代码
str(re.findall("=(.*?).doc", x)[0]).replace("UTF-8'\'", "")
Takitooru 发表于 2022-10-12 09:45
代码

import re
str = """docname=培训教材1.doc
         docname*=UTF-8''培训教材2.doc"""

result = re.findall(r'=(.*?).doc', str)
print(result)


截图
Snipaste_2022-10-12_09-44-42.jpg
bobo2017365 发表于 2022-10-12 09:52
compiler = re.compile(r'docname(\*?)=(UTF-8\'\'?)(.*)')
这句正则,是因为匹配多加了一个 (UTF-8\'\'?)(.*),这个的意思是匹配 UTF-8'' 或者 UTF-8''',当然只能匹配第二条,
前面的docname(\*?)  正则没毛病
如果你非要这么写,正确的写法:
[Python] 纯文本查看 复制代码
t1 = "docname=培训教材1.doc"
t2 = "docname*=UTF-8''培训教材2.doc"
for t in [t1, t2]:
    print(re.search(r"docname(\*?)=(UTF\-8\'\'|)", t))


你的点Z是我回答的动力
天下客 发表于 2022-10-12 10:10
你的问号应该在第二个小括号外边,这样才表示小括号内的数据出现0次或1次。
你的问号在小括号里边只表示问号前的引号出现0次或1次。
xuanmuluck 发表于 2022-10-12 10:11
本帖最后由 xuanmuluck 于 2022-10-12 10:14 编辑

[Python] 纯文本查看 复制代码
s1='docname=培训教材1.doc'
 s2="docname*=UTF-8''培训教材2.doc"
re.findall("docname\*?=(?:UTF-8\'\')?(.*?)\.doc",s2)
re.findall("docname\*?=(?:UTF-8\'\')?(.*?)\.doc",s1)

基础不扎实,而且你要匹配啥也没说清楚
 楼主| lengkeyu 发表于 2022-10-12 10:16
bobo2017365 发表于 2022-10-12 09:52
compiler = re.compile(r'docname(\*?)=(UTF-8\'\'?)(.*)')
这句正则,是因为匹配多加了一个 (UTF-8\'\'?) ...

还是要多学习,问题解决了。谢谢。
chinamail 发表于 2022-10-12 10:17
你这理解错了好几处,re.search只匹配一次, \是转义符,\*就是*字符  
 楼主| lengkeyu 发表于 2022-10-12 10:29
xuanmuluck 发表于 2022-10-12 10:11
[mw_shl_code=python,true]
s1='docname=培训教材1.doc'
s2="docname*=UTF-8''培训教材2.doc"

确实是学的不扎实。
(?:UTF-8\'\')?
这个写法,能给解释下么,谢谢!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表