VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python正则表达式基础(2)

(1)当使用松散正则表达式时,最重要的一件事就是:必须传递一个额外的参数re.VERBOSE,它是re模块的一个常量,标志着待匹配的正则表达式是一个松散正则表达式。pattern的空格和注释都是被忽略的,但同时具有更好的可读性。

4 个例研究:解析电话号码

必须匹配如下电话号码:

800-555-1212

800 555 1212

800.555.1212

(800)555-1212

1-800-555-1212

800-555-1212-1234

800-555-1212x1234

800-555-1212 ext.1234

work 1-(800) 555,1212 #1234

格式比较多,我们需要知道的是800为区号,干线号为555,电话号的其他数字为1212,对于有分机号的,我们需要知道分机号为1234

1
2
3
4
5
6
7
8
9
10
11
phonePattern= re.compile(r'''
    # don't match beginging of string
(\d{3}) # 3 digits
\D*     #any number of non-digits
(\d{3}) # 3 digits
\D*     #any number of non-digits
(\d{4}) # 4 digits
\D*     #any number of non-digits
(\d*)   #any number of digits
''',re.VERBOSE)
print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800','555','1212','1234')

 

print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')

(1)一个松散正则表达式如上, 首先匹配3个数字区号(不一定从第一个字符开始,所以没有用^),接着后面匹配任意多个非数字的字符,接着匹配3个数字干线号,接着匹配任意多个非数字的字符,接着匹配4个数字号码,接着匹配任意多个非数字的字符,接着匹配任意多个数字的分机号,然后用groups函数分组,得到正确的电话号码。



相关教程
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号