
要匹配的字符串,例如:‘请激活您的集思网账户 发件人 :OpinionWorld 集思网 时间:2019 年 3 月 9 日 19:57 (星期六)’
要求:匹配 "请激活您的集思网账户", "OpinionWorld 集思网", "2019 年 3 月 9 日 19:57 (星期六)" 这三处有效信息,但是测试屡败,以前也没想过匹配中文....
那,这个正则表达式该怎么写啊,虚心求教 T_T !
1 krixaar 2019-03-15 08:54:35 +08:00 如果“发件人:”和“时间:”是固定存在的,直接按这俩匹配出三个.+就行了吧…… |
3 ctro15547 2019-03-15 08:58:44 +08:00 如果只是固定的这一句话,用空格做分隔符,列表再切一下,拼起来不就完事了。。 |
4 delectate 2019-03-15 08:59:43 +08:00 >>> str '请激活您的集思网账户 发件人 :OpinionWorld 集思网 时间:2019 年 3 月 9 日 19:57 (星期六)' >>> re.findall(r'(.*?) 发件人 :(.*?) 时间:(.*?$)', str) [('请激活您的集思网账户', 'OpinionWorld 集思网', '2019 年 3 月 9 日 19:57 (星期六)')] |
6 CloudMx 2019-03-15 09:02:06 +08:00 \u8bf7\u6fc0\u6d3b\u60a8[^。]+ |
7 CloudMx 2019-03-15 09:02:35 +08:00 @CloudMx 如果是这样结尾:请激活您的集思网账户 发件人 :OpinionWorld 集思网 时间:2019 年 3 月 9 日 19:57 (星期六)。 |
12 imlinhanchao 2019-03-15 09:07:28 +08:00 @Northxw 如果你的 str 是 unicode 格式,那麽你的正要加上 u:ur'(.*?) 发件人 :(.*?) 时间:(.*?$)' |
13 Northxw OP @imlinhanchao 不是 Unicode, 单纯中文字符,网页上一般是 UTF8。 |
14 ClouMx 2019-03-15 09:12:06 +08:00 \u8bf7\u6fc0\u6d3b\u60a8(.)+\) |
15 weixuan 2019-03-15 09:24:51 +08:00 4L 给出了答案,不用 r 前缀他的表达式也可以解决你的这个问题,你给的字符串没有涉及到转义的,使用 r 前缀就不用考虑转义的问题,因为 Python 的字符串本身也用\转义。比如 'ABC\\-001' ,对应的正则表达式字符串是'ABC\-001',使用 r'ABC\-001',对应的正则表达式字符串就是'ABC\-001'不变。 |
16 CloudMx 2019-03-15 09:26:43 +08:00 请激活.+\) Python2 HTML-->UTF-8 |
19 metamask 2019-03-15 09:49:46 +08:00 .*(?=\s 发件人)|(?<=发件人\s(:|:)).*(?=\s 时间)|(?<=时间(:|:)).* 不过需要看具体文本再看怎么写,可能前面还附带东西或者后面 习惯写大概这样 compiles = [ .*(?=\s 发件人) (?<=发件人\s(:|:)).*(?=\s 时间) (?<=时间(:|:)).* ] compiles = "|".join(compiles) |
22 TimePPT PRO 要是这玩意本身就是邮件,建议直接读邮件头 |
23 Northxw OP |