小甲鱼 发表于 2015-1-6 11:34:16

已有 12 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

8128697 发表于 2015-1-6 20:48:53

支持甲鱼哥。希望正则完了再来个多线程就完美了。 我有空多拉几个同学来鱼c让他们加入vip。

JackJonesAngel 发表于 2015-2-2 15:13:28

感谢分享!

LearnGG 发表于 2015-4-25 11:11:30

继续学习。。。。。:shock:

kissbar 发表于 2015-6-14 23:40:43

说实在的,还是不懂

旋转风 发表于 2015-12-16 13:57:44

有点看不懂:dizzy:

qiuhao1112 发表于 2015-12-31 10:04:50

谢谢小甲鱼老师的详细讲解:smile

liuyueyi 发表于 2016-2-24 18:09:49

看到这里有一点懵了

一滴 发表于 2016-3-13 17:58:52

小甲鱼老师 这个错误怎么解决,urllib.error.URLError: <urlopen error unknown url type: "http>

下面的是发的求助,希望老师解答    谢谢
http://bbs.fishc.com/forum.php?mod=viewthread&tid=69946&extra=page%3D1%26filter%3Dtypeid%26typeid%3D392

drplant 发表于 2016-4-15 10:12:34

8128697 发表于 2015-1-6 20:48
支持甲鱼哥。希望正则完了再来个多线程就完美了。 我有空多拉几个同学来鱼c让他们加入vip。

为什么加了‘\1’就返回‘the the’呢
不加\1的情况:p.search('   ').group() 返回的是第一单词“paris"
                        p.findall('') 返回的是['paris','in','the','the']   #为什么每个单词后面没有‘ ‘空格
加上了'\1': p.seach().group()返回‘the the ’
               p.findall() 返回['the']   #the后面并没有空格

不懂~~
求教高人!

ultramodel 发表于 2016-6-9 14:57:08

讲的很不错,学习了

小印儿 发表于 2016-7-29 22:34:48

{:5_106:}

爱上北方女孩 发表于 2016-8-17 10:53:39

热爱鱼C

Python1000 发表于 2016-10-20 17:57:45

本帖最后由 Python1000 于 2016-10-20 17:59 编辑

“有几个小括号就有几个子组”那段,‘(a)(b)’应该有三个小组:(ab)、(a)、(b);'a(b)'应该有两个小组:(ab)、(b);'(a(b))'应该有三个小组:(ab)、(ab)、(b)

Python1000 发表于 2016-10-20 18:18:54

drplant 发表于 2016-4-15 10:12
为什么加了‘\1’就返回‘the the’呢
不加\1的情况:p.search('   ').group() 返回的是第一单词“paris ...

我也不是很懂!!!!!!!!!!!!!!!{:10_243:}

阿长 发表于 2016-11-3 19:57:06

Python1000 发表于 2016-10-20 18:18
我也不是很懂!!!!!!!!!!!!!!!

这段真心没看懂

shiwobuhaoma 发表于 2016-11-29 15:22:03

drplant 发表于 2016-4-15 10:12
为什么加了‘\1’就返回‘the the’呢
不加\1的情况:p.search('   ').group() 返回的是第一单词“paris ...

不加\1应该是只匹配到字母+空格的形式就可以,所以用search返回了第一个字符串
用\1之后的形式应该相当于:(\b\w+)\s+(\b\w),字母+空格+字母,且两个字母字符串要是相同的,因为\1就代表应用前序号为1的子组,符合这中形式且空格左右字符相等的字符串只有the the。

hehehaha4334 发表于 2016-12-27 08:57:55

对小甲鱼点赞,感谢小甲鱼的教学

枯叶_ 发表于 2017-1-6 00:19:34

本帖最后由 枯叶_ 于 2017-1-6 00:31 编辑

#用一段代码测试一下子组概念
import re

p1 = re.compile('(a)(b)')
m1 = p1.match('ab')
print('''p1 = re.compile('(a)(b)')
m1 = p1.match('ab')\n''')
print('m1.groups()--> ',m1.groups())
print('m1.group(0) --> ',m1.group(0))
print('m1.group(1) --> ',m1.group(1))
print('m1.group(2) --> ',m1.group(2))
try:
    print('m1.group(3) --> ',m1.group(3))
except:
    print('没有第三子组')

p2 = re.compile('((a)b)')
m2 = p2.match('ab')
print('''\n\n\np2 = re.compile('((a)b)')
m2 = p1.match('ab')\n''')
print('m2.groups()--> ',m2.groups())
print('m2.group(0) --> ',m2.group(0))
print('m2.group(1) --> ',m2.group(1))
print('m2.group(2) --> ',m2.group(2))
try:
    print('m2.group(3) --> ',m2.group(3))
except:
    print('没有第三子组')



#下面是输出结果

p1 = re.compile('(a)(b)')
m1 = p1.match('ab')

m1.groups()-->('a', 'b')
m1.group(0) -->ab
m1.group(1) -->a
m1.group(2) -->b
没有第三子组


p2 = re.compile('((a)b)')
m2 = p1.match('ab')

m2.groups()-->('ab', 'a')
m2.group(0) -->ab
m2.group(1) -->ab
m2.group(2) -->a
没有第三子组


#group()参数0或者空表示整段匹配的字符串,从1开始到后面就是groups()对应的几个字符串,这样理解对吧?如果有不对请指教{:10_272:}

枯叶_ 发表于 2017-1-6 00:21:27

本帖最后由 枯叶_ 于 2017-1-6 00:24 编辑

本来想回复自己修改点内容,结果可以再原文修改,那这段就没用了。。。
页: [1] 2 3
查看完整版本: Python3 如何优雅地使用正则表达式(详解四)