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

Crossin的编程教室

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

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

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-2-22 22:54:37 |显示全部楼层
catherinemic 发表于 2016-2-22 20:09
^1\d*[x]?
以1开头的一串数字,数字结尾有字母x,也可以没有。有的话就带上x。

中括号是可选,不括起来就一定得有x
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-2-22 22:58:16 |显示全部楼层
catherinemic 发表于 2016-2-22 20:09
^1\d*[x]?
以1开头的一串数字,数字结尾有字母x,也可以没有。有的话就带上x。

中括号表示可选,如果不加,那就必须要有x
===================
更正:这里中括号加不加效果是一样的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

发表于 2016-2-24 10:56:00 |显示全部楼层
crossin先生 发表于 2016-2-22 22:58
中括号表示可选,如果不加,那就必须要有x

如果不加中括号,x后还有?表示连续0-1次,0次的话不就表示可以没有x吗?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-2-24 11:26:03 |显示全部楼层
catherinemic 发表于 2016-2-24 10:56
如果不加中括号,x后还有?表示连续0-1次,0次的话不就表示可以没有x吗?

sorry,我这里搞错了,的确不用加[]也是一样的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

发表于 2016-6-4 15:41:50 |显示全部楼层
老师,在本次课中你说正则表达式也可以用来检测输入的信息是否符合规则。
像输入用户名、身份证号码等。具体的操作是怎样的呢?
我自己的想法是,将input的字符串split后成list
然后运用re.findall应用规则,并得出另一个list m
用if语句看他们是不是 = =
这样是不是正确?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-6-4 22:37:56 |显示全部楼层
kuaikemai 发表于 2016-6-4 15:41
老师,在本次课中你说正则表达式也可以用来检测输入的信息是否符合规则。
像输入用户名、身份证号码等。具 ...

你这样是可行的的。不过正则本身就可以用^和$限定开头和结尾,限定了之后,能匹配出来就是正确,匹配不出来就是错误
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

发表于 2016-8-26 16:32:39 |显示全部楼层
问一下楼主,我把号码以正则表达式匹配出来,想写入一个txt,writelines写入要怎么加换行呢,不处理号码都是连着排成一行,如下格式:
(021)88776543010-55667890025844533620571 66345673
如果把列表转换成字符串加上\n写入,虽然能换行了,但是txt中的号码会带上括号和引号很别扭,如下:
['(021)88776543']
['010-55667890']
['02584453362']
['0571 66345673']
要如何在txt文件中得到下面的格式呢?
(021)88776543
010-55667890
02584453362
0571 66345673

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-8-26 23:45:04 |显示全部楼层
zgd1219 发表于 2016-8-26 16:32
问一下楼主,我把号码以正则表达式匹配出来,想写入一个txt,writelines写入要怎么加换行呢,不处理号码都 ...

是应该列表中的每个元素后面加上\n,然后writelines。而不是直接转字符串,你转字符串的时候把list的[]也给转进去了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

发表于 2016-8-29 08:26:16 |显示全部楼层
crossin先生 发表于 2016-8-26 23:45
是应该列表中的每个元素后面加上\n,然后writelines。而不是直接转字符串,你转字符串的时候把list的[]也 ...

谢谢,按楼主说的写就可以了
        m[0] = m[0] + '\n'
        n.writelines(m)
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

发表于 2016-10-19 13:01:32 |显示全部楼层
请问:对于号码匹配
我写了如下:r'[(\d{1}]\d{2}[)-\d{1}][\d{7}\d{8}(\s\d{8})]'
请问是哪里出来问题?
回复

使用道具 举报

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

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

GMT+8, 2024-4-19 04:29 , Processed in 0.031726 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部