请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【Python 第59课】 正则表达式(5)

[复制链接]

0

主题

0

好友

48

积分

新手上路

Rank: 1

发表于 2015-7-10 23:20:12 |显示全部楼层
crossin先生 发表于 2015-7-10 00:31
它就是这样可以匹配啊,如果你强行要匹配2+7,就不能给3和8的选项,不然都会尽可能匹配的 ...

原来是我把所有号码连一起写了,彼此加了空格就好了。
还是要问一下,号码收尾连在一起就匹配错了,想了好久无果。
" (021)88776543010-55667890025844533620571 66345673 "
结果是['(021)88776543'  '010-55667890'  '025844533620']
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2015-7-11 18:11:03 |显示全部楼层
lincoln 发表于 2015-7-10 23:20
原来是我把所有号码连一起写了,彼此加了空格就好了。
还是要问一下,号码收尾连在一起就匹配错了,想了 ...

因为同等情况下,会优先匹配更长的结果,就把0也给匹配到前一次结果里了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

发表于 2016-1-13 03:06:00 |显示全部楼层
本帖最后由 周末晒被子 于 2016-1-13 03:09 编辑

看了一遍《正则表达式30分钟教程》。看懂70%左右。
先生已经讲过的部分不难,可以很快过;
“零宽断言”(和负向零宽断言)部分,有一些理解困难;
“处理选项”部分,好像不难,没有操作的话等于没看;
“平衡组/递归匹配”这部分,思想方法介绍地很明白,但是给出的例子就看不明白了,应该是文章因为有默认前置知识我不知道。

只想说谢谢先生啊,让编程学起来更容易。
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-1-13 10:07:32 |显示全部楼层
周末晒被子 发表于 2016-1-13 03:06
看了一遍《正则表达式30分钟教程》。看懂70%左右。
先生已经讲过的部分不难,可以很快过;
“零宽断言”( ...

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

94

积分

注册会员

Rank: 2

发表于 2016-4-14 15:58:47 |显示全部楼层
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

发表于 2016-6-30 17:21:16 |显示全部楼层
先生好!
您上面提到\(?0\d{2,3}[) -]?\d{7,8}  在这里面[) -]? 表示的是区号之后跟着的可能是")"、" "、"-",也可能什么也没有
我刚一看到这里总感觉是区号后面 )- 的意思是要么同时出现,要么这俩符号都没有。。。
比如(010)-92891381 匹配,但是(010)92891381 就不匹配了
好奇怪。。。
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-6-30 21:40:35 |显示全部楼层
Yumiao_HyunMin 发表于 2016-6-30 17:21
先生好!
您上面提到\(?0\d{2,3}[) -]?\d{7,8}  在这里面[) -]? 表示的是区号之后跟着的可能是")"、" "、"- ...

中括号里面的内容表示选其中任一个
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

发表于 2016-7-1 09:16:04 |显示全部楼层
crossin先生 发表于 2016-6-30 21:40
中括号里面的内容表示选其中任一个

好的明白了!!
回复

使用道具 举报

0

主题

0

好友

36

积分

新手上路

Rank: 1

发表于 2018-10-21 15:09:39 |显示全部楼层
  1. import re

  2. Num = '(021)88776543 010-55667890 02584453362 0571 66345673f'
  3. m = re.findall(r'\(?0\d{2,3}[) -]?\d{7,8}]', Num)
  4. print(m)
复制代码
先生好,请问我这个代码为什么输出的是空啊
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-10-21 21:54:58 |显示全部楼层
marvinmi 发表于 2018-10-21 15:09
先生好,请问我这个代码为什么输出的是空啊

最后多个中括号]吧
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 02:34 , Processed in 0.027397 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部