设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第58课】 正则表达式(4)

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

41#
发表于 2016-10-19 14:04:05 |只看该作者
Tony 发表于 2016-10-19 13:01
请问:对于号码匹配
我写了如下:r'[(\d{1}]\d{2}[)-\d{1}][\d{7}\d{8}(\s\d{8})]'
请问是哪里出来问题? ...

中括号里表示任选一个字符
你不能把 \d{7} \d{8} 都放到中括号里,这样它还是认为是任意一个数字
\d{7,8}这样倒是可以
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

42#
发表于 2016-10-19 15:54:29 |只看该作者
crossin先生 发表于 2016-10-19 14:04
中括号里表示任选一个字符
你不能把 \d{7} \d{8} 都放到中括号里,这样它还是认为是任意一个数字
\d{7,8} ...

我将表达式改成了这个:
r'[(\d{2,3}][)-]\d{7,8}'
结果,不可以识别:010-55667890这类的
它识别的结果是:['0-55667890']
请问,这是怎么回事?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

43#
发表于 2016-10-20 13:50:58 |只看该作者
Tony 发表于 2016-10-19 15:54
我将表达式改成了这个:
r'[(\d{2,3}][)-]\d{7,8}'
结果,不可以识别:010-55667890这类的

还是一样啊,你用
[(\d{2,3}][)-]
那它还是会只认其中任何一个字符
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

44#
发表于 2016-10-21 08:44:58 |只看该作者
对,就是。在第一个[]中它要么识别出( 要么识别出d{2,3} 在第二个[]中,它要么识别出) 要么识别出- 最后识别出d{7,8}
而现在是它识别出了第二个中的- 以及后面的d{7,8} 在第一个中,只识别出了1个数字字符。而我写的是d{2,3}
我想问的是为什么会出现这种情况
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

45#
发表于 2016-10-21 13:27:56 |只看该作者
Tony 发表于 2016-10-21 08:44
对,就是。在第一个[]中它要么识别出( 要么识别出d{2,3} 在第二个[]中,它要么识别出) 要么识别出- 最后识 ...

d{2,3}别放在中括号里,和前面说的问题一样,你放在中括号里,不会给你区分是(或d{2,3},而是整个这些里面任何一个字符
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

46#
发表于 2016-10-21 15:42:49 |只看该作者
crossin先生 发表于 2016-10-21 13:27
d{2,3}别放在中括号里,和前面说的问题一样,你放在中括号里,不会给你区分是(或d{2,3},而是整个这些里面 ...

也就是说这样:[(\d{2,3}]
对于:
(
1
12
123
均可以识别出来?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

47#
发表于 2016-10-22 15:29:20 |只看该作者
Tony 发表于 2016-10-21 15:42
也就是说这样:[(\d{2,3}]
对于:
(

不是,你这么写,和你写[(\d],甚至[(\d+]是一个效果,中括号里是任取一个字符,所以不管你里面的规则几个,加了中括号都是任取一个
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

48#
发表于 2016-10-23 21:00:59 |只看该作者
crossin先生 发表于 2016-10-22 15:29
不是,你这么写,和你写[(\d],甚至[(\d+]是一个效果,中括号里是任取一个字符,所以不管你里面的规则几 ...

哦,总算明白了。谢谢了哈!
还有,学完了这个,请问有好的书籍或者练手项目推荐没?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

49#
发表于 2016-10-23 22:43:15 |只看该作者
Tony 发表于 2016-10-23 21:00
哦,总算明白了。谢谢了哈!
还有,学完了这个,请问有好的书籍或者练手项目推荐没? ...

可以看看这个
《Python进阶》
https://eastlakeside.gitbooks.io/interpy-zh/content/
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

50#
发表于 2016-10-24 08:25:29 |只看该作者
crossin先生 发表于 2016-10-23 22:43
可以看看这个
《Python进阶》
https://eastlakeside.gitbooks.io/interpy-zh/content/

谢谢crossin 先生
回复

使用道具 举报

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

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

GMT+8, 2024-11-22 00:35 , Processed in 0.017358 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部