python核心编程第15章学习笔记

合集下载

python核心编程笔记

python核心编程笔记

1.26.20151 对于python文件.py ,如果你直接双击它会启动DOS命令行,但是一般是一闪而过的结果,对于这种情况,你可以在末尾写上raw_input() 使得命令行停留直到你输入为止。

Python 没有大括号,而是使用不同缩进区分不同代码块。

2 元素列表集合以及字典都可以存储任何互不相同的数据。

访问字典的键值如dict.keys()。

3 for 循环和range 或者xrange 一起使用用于计数4 python 的灵活如一次性输出多个变量值以及一次性赋值多个值5 range函数经常和len函数一起使用进行字符串索引。

比如知道某个字符串里的每个字符的对应索引:6 函数enumerate 解决了在循环里要么仅仅是循环索引值要么仅仅循环元素值的缺点:实际上,返回的形式为两个值,第一个是索引值,第二个是元素值。

7 列表解析,如:8 文件操作:其中r 表示读取文件,w 表示写入文件,a 表示添加。

其他的如 b 表示是二进制访问文件。

如果未指定那么默认是r 。

打开后,返回一个文件句柄也就是认为的地址吧。

通过访问文件对象调用文件的方法如readlines 等。

当然,这样的格式就是指默认和python文件是在一个目录下的。

记住open 后必须wenjian.close()9 在输出时候,一个有有意思的技巧就是使用逗号,抑制自动生成的换行符号。

因为每次print后都会自动生成一个换行符。

10 使用函数file () 等价于open ,但是前提都是文件要首先存在。

11 捕捉错误和异常,函数try – except:12 定义函数时候,默认参数问题:表示参数为debug 但是在定义参数时候给赋初值了,如果调用函数时候没有初始化函数参数那么就使用默认的参数值为true ,反之就使用你自定义的参数值。

13 关于定义类对象,格式为class ClassName (父类名称): 可以在括号里提供一个父类名称表示继承关系,如果没有的话那么就是使用object 作为父类继承。

python核心笔记

python核心笔记
字符串列表和元组16第七章映射和集合类型18第八章条件和循环20第九章文件和输入输出22第十章错误和异常23第十一章函数和函数式编程25第十二章模块27第十三章面向对象编程29第十四章执行环境部分高级主题34第十五章正则表达式34第十六章网络编程37第十七章网络客户端编程39第十八章多线程编程40第十九章图形用户界面编程42第二十章web编程
第一部分:Python 核心............................................................................................................. 6 第一章 欢迎来到 Python 世界............................................................................................... 6 第二章 快速入门 .................................................................................................................... 8 第三章 Python 基础.............................................................................................................. 10 第四章 Python 对象.............................................................................................................. 12 第五章 数字 .......................................................................................................................... 14 第六章 序列:字符串、列表和元组 .................................................................................. 16 第七章 映射和集合类型 ...................................................................................................... 18 第八章 条件和循环 .............................................................................................................. 20 第九章 文件和输入输出 ...................................................................................................... 22 第十章 错误和异常 .............................................................................................................. 23 第十一章 函数和函数式编程 .............................................................................................. 25 第十二章 模块 ...................................................................................................................... 27 第十三章 面向对象编程 ...................................................................................................... 29 第十四章 执行环境 .............................................................................................................. 32

Python编程基础(共15章)-第12章-图形用户界面编程

Python编程基础(共15章)-第12章-图形用户界面编程

12.2tkinker概述
•如上节所述,tkinter是Tk图形库在Python下的封装,它对应Python的一个包。
•这个包在Python的Windows二进制发布版中是默认安装的,在Ubuntu下可以用 “sudo apt-get install python3-tk”等方式手动安装,其它系统,请查阅相关资料 进行安装。
•这一循环直到发生了程序退出事件(用户关闭主窗口)才终止运行。
12.1.2 图形用户界面程序的运行与开发
•GUI 程序的开发一般包括两大类工作,即界面外观设计和业务逻辑程序设计 。界面外观设计主要包括各种控件的设计以及窗口的整体布局规划;业务逻辑 程序设计是GUI程序开发的核心任务,包括应用问题的建模,管理应用问题的 数据和行为,同时还要负责用户交互的事件处理程序。这些工作涉及很多与操 作系统相关的底层细节,如果完全从零开始写代码,将涉及到很多复杂琐碎而 又与实际业务逻辑无关的工作。
12.1.2 图形用户界面程序的运行与开发
•命令行界面程序一般采用过程驱动的程序设计方法。程序从启动开始按顺序 运行,在需要的地方提示用户输入,并将相关计算结果输出,直到执行完所 有指令结束退出。在这个过程中,用户的所有输入行为都完全由程序控制, 如果没有程序的输入请求,除非强行终止,否则用户不能对程序的运行做任 何额外的干涉。
第12章 图形用户界面编程
12.1 面向对象编程概述
12.1.1 从命令行界面到图形用户界面 12.1.2 图形用户界面程序的运行与开发 12.1.3 Python中的图形界面编程
12.1.1 从命令行界面到图形用户界面
•与命令行界面完全采用文本进行信息交互的方式不同,图形用户界面通过按 钮及文本框等图形化元素实现程序与用户的信息交互。在图形用户界面中, 用户通过鼠标点击或拖拉菜单、按钮、窗口等图形元素向程序发出命令,同 时,程序通过文本消息框等图形元素向用户显示信息。

python核心编程中文版(第二版)

python核心编程中文版(第二版)
if balance > 0.00: if balance - amt > min_bal and atm_cashout(): print "Here's your cash; please take all bills." else: print 'Your balance is zero or negative.'
EditByVheavens
EditByVheavens
8.3 elif (即 else-if )语句
if expression: expr_true_suite else: expr_false_suite
这里是样例代码:
if passwd == user.passwd: ret_str = "password accepted" id = user.id valid = True else: ret_str = "invalid password entered... try again!" valid = False
Python 中的 if 子句看起来十分熟悉. 它由三部分组成: 关键字本身, 用于判断结果真假的 条件表达式, 以及当表达式为真或者非零时执行的代码块. if 语句的语法如下:
if expression: expr_true_suite
if 语句的 expr_true_suite 代码块只有在条件表达式的结果的布尔值为真时才执行, 否则将 继续执行紧跟在该代码块后面的语句.
Python 的缩进使用强制使代码正确对齐, 让程序员来决定 else 属于哪一个 if . 限制您的选 择从而减少了不确定性, Python 鼓励您第一次就写出正确的代码. 在 Python 中制造出 "悬挂 else" 问题是不可能的, 而且, 由于大括号不再被使用, Python 代码更易读懂.

python知识点总结讲义

python知识点总结讲义

python知识点总结讲义一、Python 的基础语法Python 的基础语法非常简单,但是功能强大,适合初学者入门。

Python 的语法特点包括:1. 代码块使用缩进来表示,而不是使用大括号。

这使得 Python 的代码更加简洁和易读。

2. 变量不需要提前声明,可以直接赋值使用。

3. Python 支持多种数据类型,包括整数、浮点数、字符串、列表、元组、字典等。

4. Python 支持条件语句(if-else)、循环语句(for、while)、函数定义等常见的控制结构。

5. Python 的函数和模块化设计非常灵活,支持函数的嵌套和递归调用。

二、Python 的核心特性Python 作为一种高级编程语言,具有许多独特的核心特性,使其在软件开发中具有独特的优势。

其中包括以下几点:1. 简单易学:Python 的语法非常简单易懂,适合初学者入门。

对于有其他编程语言基础的人,也很容易上手。

2. 面向对象:Python 是一种面向对象的编程语言,支持类、对象、继承、多态等面向对象的特性。

3. 动态类型:Python 的变量是动态类型的,不需要提前声明变量的类型,可以根据赋值自动推断变量的类型。

4. 强大的标准库:Python 的标准库非常强大,包含了大量的模块和函数,能够满足各种开发需求。

5. 可移植性强:Python 可以在各种操作系统上运行,在 Linux、Windows、Mac 等平台都可以运行。

三、Python 的数据类型和数据结构Python 支持多种数据类型和数据结构,包括整数、浮点数、字符串、列表、元组、字典等。

其中,列表和字典是 Python 中非常重要的数据结构,具有很强的灵活性和适应性。

1. 整数和浮点数:Python 支持整数和浮点数,可以进行整数和浮点数的加减乘除等操作。

2. 字符串:Python 的字符串可以使用单引号、双引号或三引号来表示,支持字符串的切片、拼接、查找、替换等操作。

Python核心编程第二版(中文).pdf目录整理

Python核心编程第二版(中文).pdf目录整理

Python核⼼编程第⼆版(中⽂).pdf⽬录整理python核⼼编程⽬录Chapter1:欢迎来到python世界!-页码:71.1什么是python1.2起源:罗萨姆1989底创建python1.3特点1.3.1⾼级1.3.2⾯向对象1.3.3可升级1.3.4可扩展1.3.5可移植性:python使⽤C写的。

1.3.6易学1.3.7易读1.3.8易维护1.3.9健壮性1.3.10⾼效的快速原型开发⼯具1.3.11内存管理器:内存管理由python解释器负责,开发仅仅致⼒于开发计划中的应⽤程序。

1.3.12解释性和(字节)编译性:⽆需编译,当执⾏py⽂件,会⽣成.pyc或.pyo⽂件1.4下载和安装python1.5运⾏python1.5.1命令⾏的交互式解释器1.5.2从命令⾏启动脚本1.5.3集成开发环境1.5.4其他的集成开发环境和执⾏环境1.6python⽂档1.7⽐较python(python与其他语⾔的⽐较)Chapter2:Python起步-页码:31注:语句和表达式的区别语句是使⽤关键词来组成命令,告诉解释器要做什么。

表达式没有关键词,可以使算术表达式,也可以是使⽤括号调⽤的函数。

2.1程序输出,print语句及“Hello World” :print是关键字Print ‘%s is number %d!’%(‘python’,1) #print与字符串格式运算符(%)结合使⽤。

2.2程序输⼊和raw_input()内建函数:raw_input()是内建函数2.3注释#2.4运算符 :算数运算符+ - * / // % ** ⽐较运算符,逻辑运算符2.5变量和赋值2.6数字:int,long,bool,float,complex(复数)2.7字符串2.8列表[]和元组()2.9字典{}2.10代码块及缩进对齐2.11 if语句2.12 while循环2.13 for循环和range()内建函数: enumerate()内建函数可循环索引和元素2.14列表解析:可使⽤for循环将所有值放在⼀个列表⾥。

小甲鱼《零基础入门学习Python》课堂笔记

小甲鱼《零基础入门学习Python》课堂笔记

[键入公司名称]人生苦短,我用Python [键入文档副标题]徐辉[选取日期]目录01讲:我和Python的第一次亲密接触 (12)02讲:用Python设计第一个游戏 (15)03讲:小插曲之变量和字符串 (17)04讲:改进我们的小游戏 (19)05讲:闲聊之Python的数据类型 (21)06讲:Pyhon之常用操作符 (22)07讲:了不起的分支和循环1 (23)08讲:了不起的分支和循环2 (25)09讲:了不起的分支和循环3 (27)10讲:列表,一个打了激素的数组1 (29)11讲:列表,一个打了激素的数组2 (31)12讲:列表,一个打了激素的数组3 (33)13讲:元组,戴上了枷锁的列表 (36)14讲:字符串:各种奇葩的内置方法 (38)15讲:字符串的格式语句与操作符 (43)16讲:序列相关内置函数介绍 (46)1-16讲:阶段总结 (51)17讲:函数:Python的乐高积木 (52)18讲:函数:灵活即强大 (53)18讲2:py文件打包成exe文件 (55)19讲:函数:我的地盘我做主 (56)20讲:函数:内嵌函数和闭包 (58)21讲:函数:lambda表达式 (60)22讲:函数:递归是神马 (61)23讲:递归:这帮小兔崽子 (62)24讲:递归:汉诺塔 (63)17-24讲:阶段性总结 (64)25讲:字典:当索引值不好用时 (65)26讲:字典:当索引值不好用时2 (66)27讲:集合:在我的世界里,你就是唯一 (69)28讲:文件:因为懂你,所以永恒 (70)29讲:文件:一个任务 (72)30讲:文件系统:介绍一个高大上的东西 (75)31讲:永久存储:腌制一缸美味的泡菜 (79)31讲:异常处理:你不可能总是对的 (80)33讲:异常处理:你不可能总是对的2 (82)34讲:丰富的else语句和简洁的with (85)35讲:图形界面用户入门:EasyGui (87)36讲:类和对象:给大家介绍对象 (87)37讲:类和对象:面向对象编程 (89)38讲:类和对象:继承 (90)39讲:类和对象:拾遗 (91)40讲:类和对象:一些相关的BIF (94)41讲:类和对象:构造和析构 (96)42讲:类和对象:算术运算符 (98)43讲:类和对象:算术运算符2 (100)44讲:魔法方法:简单定制 (101)45讲:魔法方法:属性访问 (103)46讲:魔法方法:描述符 (105)47讲:魔法方法:定制容器 (108)48讲:魔法方法:迭代器 (109)序----小甲鱼四件在我步入职业软件开发生涯那天起就该知道的事情我的软件开发生涯开始于大约15年以前。

Python学习笔记

Python学习笔记

PYTHON学习笔记[文档副标题]Python学习笔记Python是一种新兴的计算机程序语言,是自由软件运动的丰硕成果。

Python是一种免费的、解释型的、可移植的、开放源代码的脚本编程语言。

它提供了大量的模块,不仅加快了程序开发速度和代码的清晰程度,而且使程序员专注于要解决的问题,不会陷入繁琐的技术细节。

它可以用来开发各种应用程序,从简单的脚本任务到复杂的、面向对象的应用程序。

Python是一种脚本语言,它的语法表达优美易读。

它具有很多优秀的脚本语言的特点:•解释的;•面向对象的;•内建的高级数据结构;•支持模块和包;•支持多种平台;•可扩展。

它非常适合于教学。

在学习Python的过程中,它可以使学生专注计算机程序语言的基本概念,着重理解现代程序语言的精髓,而不必理会那些细枝末节、令人头痛技术细节,这些细节问题不但难于讲解,也很难理解,而且还会使学生产生厌烦情绪,无助于计算机程序语言的学习。

我在学习《HowtoThinkLikeaComputerScientist》的过程中,发现这本书很适合初学编程语言者,而且深深被Python迷住了,因此就整理出这本笔记,供大家参考。

希望诸位多提意见,逐渐完善它,最终使它成为“指南”之类参考书,不再是笔记。

IlovePython!目录1.1程序 (5)1.2什么是调试 (6)1.3调试 (7)1.4程序语言和自然语言 (7)1.5第一个程序 (8)2.1变量和类型 (10)2.2变量名和关键字 (11)2.3语句 (11)2.4表达式 (13)2.5运算符和操作数 (14)2.6运算的顺序 (16)2.7字符串操作 (16)2.8组合 (17)2.9注释 (18)3.1函数 (19)3.2函数定义 (19)3.3函数的行参和实参 (20)3.4变量的范围 (20)3.5函数的返回值 (21)3.6类型转换 (23)3.7数学函数模块 (24)3.8 lambda函数 (25)4.1布尔表达式 (26)4.2逻辑操作符 (27)4.3条件语句 (28)4.4 while语句 (30)4.5条件嵌套 (31)4.7键盘输入 (32)5.1组合数据类型 (34)5.2用for语句遍历字符串 (34)5.3字符串片断 (35)5.4字符串模块 (36)6.1列表值 (38)6.2读写元素 (39)6.3列表的一些方法 (40)6.4列表长度 (41)6.5列表和for循环 (42)6.6列表操作符 (42)6.7列表片断 (43)6.8列表元素是可变的 (43)6.9元素的删除 (44)6.10变量和值 (44)6.11别名 (45)6.12克隆列表 (46)6.13列表参数 (47)6.14列表嵌套 (48)6.15矩阵 (48)6.16字符串和列表 (49)6.17列表映射 (49)7.1序列 (51)7.2序列赋值 (52)7.3序列作为返回值 (52)7.4随机函数 (53)7.5随机数列表 (54)7.6计数 (54)7.7分割范围 (55)8.2别名和拷贝 (58)8.3稀疏矩阵 (59)8.4暗示 (60)8.5计算字符串 (61)9.1文件的打开和关闭 (62)9.2文本文件 (63)9.3写入变量 (64)10.1错误信息 (68)10.2自定义异常信息 (68)10.3一个复杂的例子 (69)11.1用户定义数据类型 (70)11.2属性 (70)11.3同一性 (72)11.4长方形类 (73)11.5拷贝 (74)12.1面向对象的技术 (77)12.2可选择的参数 (79)12.3构造函数 (79)13.1加减法重定义 (81)13.2乘法重定义 (82)14.1继承 (84)14.2继承的定义 (84)14.3定义一个父类 (84)14.4继承Person的子类 (85)14.5私有方法 (85)1.1程序程序是根据语言提供的指令,按照一定的逻辑顺序,对获得的数据进行运算,并将结果最终返回给我们的指令和数据的组合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Python核心编程学习笔记之chapter15这一章蛮重要,代码都敲进去试过,请批评指正。

方便起见,程序写在py文件中。

1.识别下列字符串:“bat,”“bit,”“but,”“hat,”“hit,”或“hut”#!/usr/bin/env pythonimport repattern='[bh][aiu]t'm='bkibit'n=re.search(pattern,m)if n is not None:print n.group()Ps:还可以findall函数2.匹配用一个空格分隔的任意一对单词,比如,名和姓pattern='[A-Za-z]+\[A-Za-z]+'3.匹配用一个逗号和一个空格分开的一个单词和一个字母。

例如,英文人名中的姓和名的首字母pattern='[A-Za-z]+\.\[A-Za-z]'4.匹配所有合法的Python标识符pattern='[\w]+'Ps:不是非常完美,&算不算?5.请根据您(读者)本地关于地址的格式写法匹配一个街道地址(你写出的正则表达式要尽可能通用以匹配任意数目的表示街道名字的单词,包括类型指示)。

比如,美国的街道地址使用这样的格式:1180 Bordeaux Drive.使你写的正则表达式尽可能通用,要求能够匹配多个单词的街道名字,如:3120De la Cruz Boulevard.pattern='[\d]+\[A-Za-z\]+'Ps:1180Bordeaux Drive of New York呢?6.匹配简单的以“www.”开头,以“.com”作结尾的Web域名,例如:.附加题:使你写的正则表达式还支持其他顶级域名:.edu,.net 等,比如:.pattern='w{3}\.[\w]+\.[\w]+'Ps:seach与match的差别?7.匹配全体Python整数的字符串表示形式的集合pattern='\d+'8.匹配全体Python长整数的字符串表示形式的集合pattern='\d+[L]?'9.匹配全体Python浮点数的字符串表示形式的集合pattern='\d+\.\d*'10.匹配全体Python复数的字符串表示形式的集合pattern='\d*\.?\d*\+\d*\.?\d*j'11.匹配所有合法的电子邮件地址(先写出一个限制比较宽松的正则表达式,然后尽可能加强限制条件,但要保证功能的正确性)。

pattern='\w+\@\w+\.\w+'12.匹配所有合法的Web网站地址(URLs)(先写出一个限制比较宽松的正则表达式,然后尽可能加强限制条件,但要保证功能的正确性)。

pattern='www\.\w+\.\w+'13.type().type()内建函数返回一个对象类型,此对象显示为Python的字符串形式,如下所示:>>>type(0)<type'int'>>>>type(.34)<type'float'>>>>type(dir)<type'builtin_function_or_method'>请写一个正则表达式,能从这个字符串中提取出类型的名字。

你的函数能实现以下功能:如果以字符串“<type'int'>”做输入,会返回类型“int”.(返回其他类型也同理,如,返回类型‘float’,‘builtin_function_or_method’等)提示:正确的结果保存在类和某些内建类型的__name__属性里。

pattern='<type\\'(\w+)\'>'n=re.search(pattern,"<type'float'>")if n is not None:print n.group(1)14.正则表达式。

在15.2小节里,我们给出一个匹配由一位或两位数字代表一月到九月的字符串形式(“0?[1-9]”)。

请写出一个正则表达式表示标准日历上其它的三个月(十月、十一月、十二月)。

pattern='1[0-2]'15.正则表达式。

在15.2小节里,我们给出一个匹配信用卡卡号的模式:(“[0-9]{15,16}”).但这个模式不允许用连字符号分割信用卡卡号中的数字。

请写出一个允许使用连字符的正则表达式,但要求连字符必须出现在正确的位置。

例如,15位的信用卡卡号的格式是4-6-5,表示四个数字,一个连字符,后面接六个数字、一个连字符,最后是五个数字。

16位的信用卡卡号的格式是4-4-4-4,数位不足时,添0补位。

'([0-9]{4}\-?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}?)|\([0-9]{4}\-?[0-9]{6}\-?[0-9]{5})'ps:基于此思路还可以写出限制更宽松或更严格的条件,这里的问号我以为是出现一次或零次的意思,后来证实并非如此,但这个表达式是可行的16.修改脚本gendata.py的代码,使数据直接写入文件redata.txt 中,而不是输出到屏幕上。

#!/usr/bin/env pythonfrom random import randint,choicefrom string import lowercasefrom sys import maxintfrom time import ctimedoms=('com','edu','net','org','gov')t=''for i in range(randint(5,10)):dtint=randint(0,maxint-1)#pick datedtstr=ctime(dtint)#date stringshorter=randint(4,7)#login shorterem=''for j in range(shorter):#generate loginem+=choice(lowercase)longer=randint(shorter,12)#create domaindn=''for j in range(longer):dn+=choice(lowercase)t+='%s::%s@%s.%s::%d-%d-%d\n'%(dtstr,em,dn,choice(doms),dtint,shorter,longer) f=open('C:/python27/redata.txt','a')f.write(t)f.close()17.统计生成的redata.txt文件中,星期中的每一天出现的次数(或统计各月份出现的次数)。

#!/usr/bin/env pythonimport rem=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']for i in range(len(m)):x=[]pattern=m[i]f=open('C:/python27/redata.txt','r')for eachLine in f.readlines():n=re.search(pattern,eachLine)if n is not None:x+=[n.group()]print'%s appears%d times'%(m[i],len(x))18.通过检查每个输出行中整数字段部分的第一个整数是否和该行开头的时间戳相匹配来验证redata.txt中的数据是否完好#!/usr/bin/env pythonimport refrom time import ctimepattern='\:\:(\d+)'f=open('C:/python27/redata.txt','r')j=0for eachLine in f.readlines():n=re.search(pattern,eachLine)pattern1='[A-Z][a-z]{2}\[A-Z][a-z]{2}\\d+\ \d+\:\d+\:\d+\\d+'m=re.search(pattern1,eachLine).group()str(m)if n is not None:k=ctime(int(n.group(1)))str(k)if m==k:passelse:j+=1print'the%dth line is not complete'%j if j==0:print'the txt is complete'19.提取出每行中完整的时间戳字段pattern='[A-Z][a-z]{2}\[A-Z][a-z]{2}\\d+\\d+\:\d+\:\d+\\d+'20.提取出每行中完整的电子邮件地址。

(与前面的题考查内容相同,所以可以按自己喜好来做,尝试不同的思路)pattern='\:\:(.+?)\:\:'21.只提取出时间戳字段中的月份。

pattern='(\w{3})\\d{2}'22.只提取出时间戳字段中的年份pattern='[1-2]\d{3}'23.只提取出时间戳字段中的值(格式:HH:MM:SS)。

pattern='\d{2}\:\d{2}\:\d{2}'24.只从电子邮件地址中提取出登录名和域名(包括主域名和顶级域名,二者连在一起)pattern='\w+\@\w+\.\w{3}'25.只从电子邮件地址中提取出登录名和域名(包括主域名和顶级域名,二者分别提取)。

pattern='(\w+)\@(\w+\.\w{3})'26.将每行中的电子邮件地址替换为你自己的电子邮件地址n=re.sub(pattern,'dongyuguo@',eachLine)27.提取出时间戳中的月、日、年,并按照格式“月日,年”显示出来,且每行仅遍历一次#!/usr/bin/env pythonimport ref=open('C:/python27/redata.txt','r')pattern='(\w{3}\\d{2}).+?(\d{4})\:'for eachLine in f.readlines():n=re.search(pattern,eachLine)print n.group(1),',',n.group(2)28.区号(第一组的三个数字和它后面的连字符)是可选的,即,你写的正则表达式对800-555-1212和555-1212都可以匹配pattern='\d{3}\-\d{3}\-\d{4}|\d{3}\-\d{4}'29.区号中可以包含圆括号或是连字符,而且它们是可选的,就是说你写的正则表达式可以匹配800-555-1212,或555-1212,或(800) 555-1212pattern='\d{3}\-\d{3}\-\d{4}|\d{3}\-\d{4}|\(\d{3}\)\d{3}\-\d{4}'正如书上所说,这里的正则表达式只是皮毛,它的强大还有待进一步学习。

相关文档
最新文档