使用正则表达式实现模式匹配
元字符 (参见 python 模块 re 文档)
. 匹配任意字符(不包括换行符)
a 字母a
ab 字符串ab
^ 匹配开始位置,多行模式下匹配每一行的开始
$ 匹配结束位置,多行模式下匹配每一行的结束
* 匹配前一个元字符0到多次
+ 匹配前一个元字符1到多次
? 匹配前一个元字符0到1次
{m,n} 匹配前一个元字符m到n次
\\ 转义字符,跟在其后的字符将失去作为特殊元字符的含义,例如\\.只能匹配.,不能再匹配任意字符
[] 字符集,一个字符的集合,可匹配其中任意一个字符
[a,b,c,d] a,b,c,d中的任意一个
[^a,b,c,d] 除a,b,c,d之外的任意一个字符
| 逻辑表达式 或 ,比如 a|b 代表可匹配 a 或者 b
(x) 捕获组
(...) 分组,默认为捕获,即被分组的内容可以被单独取出,默认每个分组有个索引,从 1 开始,按照"("的顺序决定索引值
(?:x) 非捕获组
(?iLmsux) 分组中可以设置模式,iLmsux之中的每个字符代表一个模式,用法参见 模式 I
(?:...) 分组的不捕获模式,计算索引时会跳过这个分组
(?P<name>...) 分组的命名模式,取此分组中的内容时可以使用索引也可以使用name
(?P=name) 分组的引用模式,可在同一个正则表达式用引用前面命名过的正则
(?#...) 注释,不影响正则表达式其它部分,用法参见 模式 I
(?=...) 顺序肯定环视,表示所在位置右侧能够匹配括号内正则
(?!...) 顺序否定环视,表示所在位置右侧不能匹配括号内正则
(?<=...) 逆序肯定环视,表示所在位置左侧能够匹配括号内正则
(?<!...) 逆序否定环视,表示所在位置左侧不能匹配括号内正则
(?(id/name)yes|no) 若前面指定id或name的分区匹配成功则执行yes处的正则,否则执行no处的正则
\number 匹配和前面索引为number的分组捕获到的内容一样的字符串
\A 匹配字符串开始位置,忽略多行模式
\Z 匹配字符串结束位置,忽略多行模式
\b 匹配位于单词开始或结束位置的空字符串
\B 匹配不位于单词开始或结束位置的空字符串
\d 匹配一个数字, 相当于 [0-9]
\D 匹配非数字,相当于 [^0-9]
\s 匹配任意空白字符, 相当于 [ \t\n\r\f\v]
\S 匹配非空白字符,相当于 [^ \t\n\r\f\v]
\w 匹配数字、字母、下划线中任意一个字符, 相当于 [a-zA-Z0-9_]
\W 匹配非数字、字母、下划线中的任意字符,相当于 [^a-zA-Z0-9_]
[\u4e00-\u9fa5] 匹配中文字符的正则表达式
r"\w[-\w\.]*@\[-\w]*(\.\w[-\w]*)+" #这是一个电子邮件地址
'\\w[-\\w\\.]*@\\[-\\w]*(\\.\\w[-\\w]*)+'
r'<TAG\b[^>]*<(.*?)</TAG>'#具有结束标签的HTML标签
'<TAG\\b[^>]*<(.*?)</TAG>'
r'[-+]?((\d*)\.?\d+)|(\d\.))([Ee][-+]?\d+)?'#这是一浮点数
'[-+]?((\\d*)\\.?\\d+)|(\\d\\.))([Ee][-+]?\\d+)?'
使用模块re进行搜索拆分和替换
re.split(pattern,string,maxsplit,flags=0)#通过pattern将字符串进行拆分之多maxsplit的子串
re.match(pattern,dtring,flags=0)#检查字符串的开头是否与正则表达式pattern匹配,如果匹配成功测返回一个mach对象,否侧返回None
re.search(pattern,sting,flags=0)#检查字符串是否匹配正则表达式的部分,如果匹配成功,则返回一个match对象,否则返回none
re.findall(pattern,sting,flags=0)#查找与正则表达式匹配的所有子字符串,该函数返回一个子字符串列表。
re.sub(pattern,repl,string,flags=0)#用repl替换字符串中的所有非重叠匹配部分
import re
re.split(r'\,','hello , world!')
['hello ', ' world!']
mo=re.match(r'\d+','636 342 5765 they are nums')
mo.group()#返回的对象可以使用strat(),end(),group()函数返回匹配片段的开始索引、结束索引以及片段本身
'636'
mo.start()
0
mo.end()
3
re.search(r'[a-z]+','23434 Tehgf sfds dsfd wdew ',re.I)#re.I忽略大小写
<re.Match object; span=(6, 11), match='Tehgf'>
re.search(r'[0-9a-zA-Z]*','21433,gdshfgh 3242 dfgdf 656 fdgvd')
<re.Match object; span=(0, 5), match='21433'>
re.findall(r'\S[\u4e00-\u9fa50-9a-zA-Z]+','21433 gdshfgh 3242 dfgdf 656 fdgvd 哈哈哈')
['21433', 'gdshfgh', '3242', 'dfgdf', '656', 'fdgvd', '哈哈哈']
re.sub(r'[\u4e00-\u9fa6]+','**','大使馆 dsfs 事故 3242 活动 dsfsfds 函数 3243交换机')
'** dsfs ** 3242 ** dsfsfds ** 3243**'
文件名与其他字符串
globbing是匹配文件名和通配符的过程,是正则表带是的简化版通配符可以包含特殊符号‘*’(表示0个或多个)和“?”(正好一个)
import glob
glob.glob('*.txt')
['测试文本.txt']
Pickling和Unpickling数据模块
pickle模块实现数据序列化——将任意python数据结构保存到文件中,将其作为python表达式读回。可以使用任何python程序读出文件被pickle的表达式。
import pickle
with open('测试文本.pickle','wb')as file:
print(pickle.dump(object,file))
None
练习题
1.词频计数器
编写一个程序,用于下载用户请求的网页,并给出网页中使用最高的10个词,所有词不区分大小写。出于的目的,可以简单假设一个词由正则表达式r"\w+"确定。
import re
import sys
from collections import Counter
import requests
url=input('请输入要提取的网址')
while(1):
if re.match(r'\w{4,5}:?\/\/[\w\.\d\/]+\w*',url)==None:
url=input('输入的网页无效,请重新输入:')
else:
break
try:
with requests.get(url)as doc:
html=doc.text
print(type(html))
alist=re.findall('<p>.*[^<em></em>]</p>',html)
s=' '.join(alist)
#print(alist)
count=Counter(s.split())
dic=dict(count.most_common(10))
print(dic)
except:
print('could not open %s '%doc,file=sys.err)
请输入要提取的网址http://www.chinadaily.com.cn/a/202104/22/WS6080cfeaa31024ad0bab980f.html
<class 'str'>
{'the': 18, 'of': 10, 'a': 9, 'in': 9, 'Chinese': 6, 'on': 5, 'to': 4, 'his': 4, 'with': 2, 'Cameron': 2}
2.文件索引器
编写一个程序,建立某个指定目录(文件夹)所有文件的索引。程序构造一个字典,其中键是所有文件中的唯一词(正则表达式r"\w+"所描述的、不区分大小写的词),并且字典里每个条目的值包含该词的文件名列表。例如,如果单词aloha出现在文件early-internet.dat和hawaiian-travel.txt中,则字典将具有这样的条目:{…,‘aloha’:[‘early-internet.dat’,‘hawaiian-travel.txt’]}。
另外,程序对该字典执行pickle操作,以供将来使用
import os
import re
from collections import Counter
path='data'
dirs = os.listdir(path)
text=dict()
for d in dirs:
if re.search(r'\.[^i]\w*',d)!=None:
f=open(path+'/'+d,'r',encoding='UTF-8')
print(f)
s=''.join(f.readlines())
s=re.findall(r'\w+\w$'and r'[\S]+'and r'\D+$'and r'[^\:\|\-\?\(]+',s)
s=' '.join(s)
count=Counter(s.split())x
for key in count.keys():
if(key not in text.keys()):
text[key]=[]
text[key].append(d)
else:
text[key].append(d)
print(text)
<_io.TextIOWrapper name='data/test.txt' mode='r' encoding='UTF-8'>
<_io.TextIOWrapper name='data/test2.txt' mode='r' encoding='UTF-8'>
<_io.TextIOWrapper name='data/text.txt' mode='r' encoding='UTF-8'>
<_io.TextIOWrapper name='data/we.txt' mode='r' encoding='UTF-8'>
{'Herbalife': ['test.txt'], 'pins': ['test.txt'], 'hopes': ['test.txt'], 'on': ['test.txt', 'test2.txt', 'text.txt'], 'dual': ['test.txt'], 'circulation': ['test.txt'], 'By': ['test.txt'], 'LIU': ['test.txt'], 'ZHIHUA': ['test.txt'], 'China': ['test.txt', 'test2.txt'], 'Daily': ['test.txt'], 'Updated': ['test.txt', 'text.txt'], '2021': ['test.txt', 'text.txt'], '04': ['test.txt', 'text.txt'], '24': ['test.txt', 'text.txt'], '07': ['test.txt'], '35': ['test.txt'], 'A': ['test.txt'], 'pedestrian': ['test.txt'], 'passes': ['test.txt'], 'an': ['test.txt', 'test2.txt', 'text.txt'], 'advertisement': ['test.txt'], 'of': ['test.txt', 'test2.txt', 'text.txt'], 'Nutrition': ['test.txt'], 'in': ['test.txt', 'test2.txt', 'text.txt'], 'Nanjing,': ['test.txt'], 'Jiangsu': ['test.txt'], 'province.': ['test.txt'], 'WANG': ['test.txt'], 'QIMING/FOR': ['test.txt'], 'CHINA': ['test.txt'], 'DAILY': ['test.txt'], 'Nutrition,': ['test.txt'], 'the': ['test.txt', 'test2.txt', 'text.txt'], 'United': ['test.txt'], 'States': ['test.txt'], 'based': ['test.txt'], 'global': ['test.txt'], 'nutrition': ['test.txt'], 'company,': ['test.txt'], 'will': ['test.txt', 'test2.txt'], 'continue': ['test.txt'], 'to': ['test.txt', 'test2.txt', 'text.txt'], 'increase': ['test.txt'], 'its': ['test.txt', 'test2.txt'], 'investments': ['test.txt'], 'tap': ['test.txt'], 'growth': ['test.txt'], 'opportunities': ['test.txt'], 'arising': ['test.txt'], 'from': ['test.txt', 'text.txt'], 'new': ['test.txt', 'test2.txt'], 'development': ['test.txt', 'test2.txt'], 'pattern,': ['test.txt'], 'a': ['test.txt', 'test2.txt', 'text.txt'], 'top': ['test.txt'], 'company': ['test.txt'], 'executive': ['test.txt'], 'said.': ['test.txt', 'test2.txt'], 'Thomas': ['test.txt'], 'Harms,': ['test.txt'], 'senior': ['test.txt'], 'vice': ['test.txt'], 'president': ['test.txt'], 'and': ['test.txt', 'test2.txt', 'text.txt'], 'managing': ['test.txt'], 'director': ['test.txt'], 'Asia': ['test.txt'], 'Pacific,': ['test.txt'], 'said': ['test.txt', 'test2.txt'], 'consumption': ['test.txt'], 'upgrade': ['test.txt'], 'domestic': ['test.txt'], 'demand': ['test.txt'], 'expansion,': ['test.txt'], 'which': ['test.txt'], 'are': ['test.txt', 'text.txt', 'we.txt'], 'included': ['test.txt'], "China's": ['test.txt'], 'plan': ['test.txt'], 'for': ['test.txt', 'test2.txt', 'text.txt'], '14th': ['test.txt'], 'Five': ['test.txt'], 'Year': ['test.txt'], 'Plan': ['test.txt'], 'period': ['test.txt'], '25),': ['test.txt'], 'help': ['test.txt', 'text.txt'], 'country': ['test.txt'], 'grow': ['test.txt'], 'consumer': ['test.txt'], 'base': ['test.txt'], 'under': ['test.txt'], 'plan,': ['test.txt'], 'providing': ['test.txt'], 'huge': ['test.txt'], 'potential': ['test.txt'], 'foreign': ['test.txt'], 'enterprises.': ['test.txt'], 'Uncertainties': ['test.txt'], 'COVID': ['test.txt', 'test2.txt'], '19': ['test.txt'], 'Sino': ['test.txt'], 'US': ['test.txt'], 'relations': ['test.txt', 'test2.txt'], 'not': ['test.txt'], 'change': ['test.txt'], 'expectations': ['test.txt'], 'market,': ['test.txt'], 'only': ['test.txt'], 'Herbalife,': ['test.txt'], 'but': ['test.txt', 'text.txt'], 'any': ['test.txt'], 'he': ['test.txt', 'test2.txt'], '"We': ['test.txt'], 'committed': ['test.txt'], 'market': ['test.txt'], 'have': ['test.txt', 'test2.txt', 'text.txt'], 'aspirations': ['test.txt', 'text.txt'], 'here,"': ['test.txt'], 'said,': ['test.txt', 'test2.txt'], 'adding': ['test.txt', 'test2.txt'], 'that': ['test.txt', 'test2.txt', 'text.txt'], 'it': ['test.txt'], 'would': ['test.txt'], 'be': ['test.txt', 'text.txt'], "company's": ['test.txt'], 'second': ['test.txt'], 'largest': ['test.txt'], 'market.': ['test.txt'], 'Currently,': ['test.txt'], 'is': ['test.txt', 'test2.txt', 'text.txt'], "Herbalife's": ['test.txt'], 'third': ['test.txt'], 'after': ['test.txt', 'text.txt'], 'Mexico.': ['test.txt'], '"Quite': ['test.txt'], 'honestly,': ['test.txt'], 'I': ['test.txt', 'text.txt'], 'think': ['test.txt', 'text.txt'], 'everybody': ['test.txt'], 'understands': ['test.txt'], 'long': ['test.txt', 'test2.txt'], 'term': ['test.txt', 'test2.txt'], 'opportunity': ['test.txt', 'test2.txt'], 'strength': ['test.txt'], 'China."': ['test.txt'], 'He': ['test.txt'], 'made': ['test.txt'], 'remarks': ['test.txt'], 'during': ['test.txt', 'test2.txt'], 'recent': ['test.txt'], 'interview': ['test.txt'], 'Beijing,': ['test.txt'], 'School': ['test.txt'], 'Sport': ['test.txt'], 'Science,': ['test.txt'], 'Beijing': ['test.txt'], 'University,': ['test.txt'], 'jointly': ['test.txt', 'test2.txt'], 'unveiled': ['test.txt'], 'sports': ['test.txt'], 'study.': ['test.txt'], 'Present': ['test.txt'], 'since': ['test.txt'], '1998,': ['test.txt'], 'operates': ['test.txt'], 'about': ['test.txt', 'text.txt'], '250': ['test.txt'], 'cities': ['test.txt'], 'has': ['test.txt', 'test2.txt', 'text.txt'], 'been': ['test.txt'], 'accelerating': ['test.txt'], 'product': ['test.txt'], 'launches': ['test.txt'], 'half': ['test.txt'], '2019.': ['test.txt'], 'It': ['test.txt'], 'also': ['test.txt', 'test2.txt'], 'stepping': ['test.txt'], 'up': ['test.txt', 'test2.txt'], 'investment': ['test.txt'], 'years': ['test.txt'], 'opened': ['test.txt'], 'first': ['test.txt'], 'research': ['test.txt'], 'innovation': ['test.txt'], 'center,': ['test.txt'], 'Product': ['test.txt'], 'Innovation': ['test.txt'], 'Center,': ['test.txt'], 'Shanghai.': ['test.txt'], 'Harms': ['test.txt'], 'plans': ['test.txt'], 'localize': ['test.txt'], 'production': ['test.txt'], 'China.': ['test.txt'], 'entire': ['test.txt'], 'supply': ['test.txt', 'test2.txt'], 'chain': ['test.txt'], 'tea': ['test.txt'], 'products': ['test.txt'], 'China,': ['test.txt', 'test2.txt'], 'The': ['test.txt', 'test2.txt', 'text.txt'], 'younger': ['test.txt'], 'generation': ['test.txt'], 'major': ['test.txt'], 'focus': ['test.txt'], 'as': ['test.txt', 'test2.txt'], 'believes': ['test.txt'], 'these': ['test.txt'], 'customers': ['test.txt'], 'more': ['test.txt'], 'interested': ['test.txt'], 'better': ['test.txt'], 'at': ['test.txt'], 'much': ['test.txt'], 'earlier': ['test.txt'], 'age': ['test.txt'], 'than': ['test.txt'], 'previous': ['test.txt'], 'generation,': ['test.txt'], 'According': ['test.txt'], 'Ministry': ['test.txt'], 'Commerce,': ['test.txt'], 'actual': ['test.txt'], 'use': ['test.txt', 'test2.txt'], 'hit': ['test.txt'], '302.47': ['test.txt'], 'billion': ['test.txt'], 'yuan': ['test.txt'], '$46.5': ['test.txt'], 'billion)': ['test.txt'], 'quarter': ['test.txt'], 'this': ['test.txt', 'test2.txt'], 'year,': ['test.txt'], '39.9': ['test.txt'], 'percent': ['test.txt'], 'yearly': ['test.txt'], 'basis,': ['test.txt'], 'while': ['test.txt'], 'dollar': ['test.txt'], 'terms,': ['test.txt'], 'figure': ['test.txt'], 'reached': ['test.txt'], '$44.86': ['test.txt'], 'billion,': ['test.txt'], '43.8': ['test.txt'], 'basis.': ['test.txt'], 'Experts': ['test.txt'], 'continuously': ['test.txt'], 'improving': ['test.txt'], 'business': ['test.txt'], 'environment': ['test.txt'], 'encouraging': ['test.txt'], 'economic': ['test.txt'], 'performance': ['test.txt'], 'helped': ['test.txt'], 'investors': ['test.txt'], 'sustain': ['test.txt'], 'their': ['test.txt', 'test2.txt', 'text.txt'], 'Despite': ['test.txt', 'text.txt'], 'epidemic,': ['test.txt'], 'launched': ['test.txt'], '18': ['test.txt'], 'last': ['test.txt'], 'setting': ['test.txt'], 'record': ['test.txt'], 'history.': ['test.txt'], 'all': ['test.txt', 'text.txt'], 'selling': ['test.txt'], 'well,': ['test.txt'], 'with': ['test.txt', 'test2.txt'], 'sales': ['test.txt'], 'registering': ['test.txt'], 'double': ['test.txt'], 'digit': ['test.txt'], 'basis': ['test.txt'], 'six': ['test.txt'], 'months': ['test.txt'], 'year.': ['test.txt'], 'To': ['test.txt'], 'meet': ['test.txt'], 'Chinese': ['test.txt', 'text.txt'], 'promote': ['test.txt', 'test2.txt'], 'knowledge,': ['test.txt'], 'collaborating': ['test.txt'], 'academics': ['test.txt'], 'winter': ['test.txt'], 'sport': ['test.txt'], 'research.': ['test.txt'], 'In': ['test.txt'], 'September': ['test.txt'], '2019,': ['test.txt'], 'donated': ['test.txt'], '$1.5': ['test.txt'], 'million': ['test.txt'], 'University': ['test.txt'], 'Education': ['test.txt'], 'Foundation': ['test.txt'], 'establish': ['test.txt'], 'Winter': ['test.txt'], 'Sports': ['test.txt'], 'Development': ['test.txt'], 'Fund.': ['test.txt'], 'Research': ['test.txt'], 'Center': ['test.txt'], 'was': ['test.txt'], 'established': ['test.txt', 'test2.txt'], 'study': ['test.txt', 'text.txt'], 'role': ['test.txt'], 'sports.': ['test.txt'], 'Premier': ['test2.txt'], 'Li': ['test2.txt'], 'Keqiang': ['test2.txt'], 'highlighted': ['test2.txt'], 'Friday': ['test2.txt'], 'importance': ['test2.txt'], 'Laos': ['test2.txt'], 'facilitate': ['test2.txt'], 'implementation': ['test2.txt'], 'Regional': ['test2.txt'], 'Comprehensive': ['test2.txt'], 'Economic': ['test2.txt'], 'Partnership': ['test2.txt'], 'early': ['test2.txt'], 'possible': ['test2.txt'], 'safeguard': ['test2.txt'], 'security': ['test2.txt'], 'stability': ['test2.txt'], 'regional': ['test2.txt'], 'industrial': ['test2.txt'], 'chains.': ['test2.txt'], 'Speaking': ['test2.txt'], 'phone': ['test2.txt'], 'conversation': ['test2.txt'], 'Phankham': ['test2.txt'], 'Viphavanh,': ['test2.txt'], 'prime': ['test2.txt'], 'minister': ['test2.txt'], 'Laos,': ['test2.txt'], 'called': ['test2.txt'], 'upon': ['test2.txt'], 'both': ['test2.txt'], 'sides': ['test2.txt'], 'upgrading': ['test2.txt'], 'between': ['test2.txt'], 'Association': ['test2.txt'], 'Southeast': ['test2.txt'], 'Asian': ['test2.txt'], 'Nations,': ['test2.txt'], 'uphold': ['test2.txt'], 'free': ['test2.txt'], 'trade': ['test2.txt'], 'enhance': ['test2.txt'], 'well': ['test2.txt'], 'being': ['test2.txt'], 'peoples.': ['test2.txt'], 'year': ['test2.txt'], 'marked': ['test2.txt'], '30th': ['test2.txt'], 'anniversary': ['test2.txt'], 'establishment': ['test2.txt'], 'dialogue': ['test2.txt'], 'relationship': ['test2.txt'], 'ASEAN.': ['test2.txt'], 'As': ['test2.txt'], 'friendly': ['test2.txt'], 'neighbors': ['test2.txt'], 'sharing': ['test2.txt'], 'common': ['test2.txt'], 'mountains': ['test2.txt'], 'waters,': ['test2.txt'], 'friendship,': ['test2.txt'], 'good': ['test2.txt'], 'two': ['test2.txt'], 'peoples': ['test2.txt'], 'standing': ['test2.txt'], 'test': ['test2.txt'], 'time': ['test2.txt'], 'continuing': ['test2.txt'], 'flourish,': ['test2.txt'], 'always': ['test2.txt'], 'taken': ['test2.txt'], 'bilateral': ['test2.txt'], 'priority': ['test2.txt'], 'neighborhood': ['test2.txt'], 'diplomacy.': ['test2.txt'], 'marks': ['test2.txt'], '60th': ['test2.txt'], 'diplomatic': ['test2.txt'], 'relations,': ['test2.txt'], 'stands': ['test2.txt'], 'ready': ['test2.txt'], 'work': ['test2.txt'], 'exchanges,': ['test2.txt'], 'deepen': ['test2.txt'], 'pragmatic': ['test2.txt'], 'win': ['test2.txt'], 'cooperation': ['test2.txt'], 'toward': ['test2.txt', 'text.txt'], 'progress': ['test2.txt'], 'building': ['test2.txt'], 'community': ['test2.txt'], 'shared': ['test2.txt'], 'future,': ['test2.txt'], 'Viphavanh': ['test2.txt'], 'willing': ['test2.txt'], 'enable': ['test2.txt'], 'friendship': ['test2.txt'], 'reach': ['test2.txt'], 'deeper': ['test2.txt'], 'broader': ['test2.txt'], 'level.': ['test2.txt'], 'step': ['test2.txt'], 'communication': ['test2.txt'], 'coordination': ['test2.txt'], 'over': ['test2.txt'], 'international': ['test2.txt'], 'affairs': ['test2.txt'], 'move': ['test2.txt', 'text.txt'], 'forward': ['test2.txt'], 'ties': ['test2.txt'], 'ASEAN': ['test2.txt'], 'agreed': ['test2.txt'], 'fight': ['test2.txt'], 'against': ['test2.txt'], '19.': ['test2.txt'], "What's": ['text.txt'], 'behind': ['text.txt'], "parents'": ['text.txt'], 'anxiety': ['text.txt'], 'education': ['text.txt'], 'chinadaily.com.cn': ['text.txt'], '09': ['text.txt'], '00': ['text.txt'], "Editor's": ['text.txt'], 'note': ['text.txt'], '"A': ['text.txt'], 'Love': ['text.txt'], 'Dilemma,"': ['text.txt'], 'family': ['text.txt'], 'drama': ['text.txt'], 'focusing': ['text.txt'], 'three': ['text.txt'], "families'": ['text.txt'], 'different': ['text.txt'], 'attitudes': ['text.txt'], "children's": ['text.txt'], 'education,': ['text.txt'], 'sparked': ['text.txt'], 'heated': ['text.txt'], 'online': ['text.txt'], 'discussions.': ['text.txt'], "government's": ['text.txt'], 'lighten': ['text.txt'], 'burden': ['text.txt'], 'schoolwork,': ['text.txt'], 'many': ['text.txt'], 'parents': ['text.txt'], 'still': ['text.txt'], 'send': ['text.txt'], 'children': ['text.txt'], 'attend': ['text.txt'], 'various': ['text.txt'], 'school': ['text.txt'], 'training': ['text.txt'], 'classes': ['text.txt'], 'order': ['text.txt'], 'get': ['text.txt'], 'edge': ['text.txt'], 'exams': ['text.txt'], 'amid': ['text.txt'], 'fierce': ['text.txt'], 'competition.': ['text.txt'], 'Why': ['text.txt'], 'stressed': ['text.txt'], "child's": ['text.txt'], 'schooling': ['text.txt'], 'What': ['text.txt'], 'How': ['text.txt'], 'can': ['text.txt'], 'quality': ['text.txt'], 'achieved': ['text.txt'], 'Readers': ['text.txt'], 'share': ['text.txt'], 'opinions.': ['text.txt'], 'jetschin': ['text.txt'], 'sometimes': ['text.txt'], 'somehow': ['text.txt'], 'transferred': ['text.txt'], 'own': ['text.txt'], 'personal': ['text.txt'], 'children.': ['text.txt'], 'Thus,': ['text.txt'], 'relentless': ['text.txt'], 'efforts': ['text.txt'], 'very': ['text.txt'], 'hard,': ['text.txt'], 'etc...': ['text.txt'], 'intentions': ['text.txt'], 'may': ['text.txt'], 'noble': ['text.txt'], 'we': ['text.txt', 'we.txt'], 'need': ['text.txt'], 'understand': ['text.txt'], 'each': ['text.txt'], 'gifts': ['text.txt'], 'another,': ['text.txt'], 'even': ['text.txt'], 'though': ['text.txt'], 'siblings': ['text.txt'], 'come': ['text.txt'], 'same': ['text.txt'], 'parent.': ['text.txt'], 'Perhaps': ['text.txt'], 'what': ['text.txt'], 'do': ['text.txt'], 'nurture': ['text.txt'], 'refine': ['text.txt'], 'child': ['text.txt'], 'so': ['text.txt'], 'they': ['text.txt'], 'realize': ['text.txt'], 'fullest': ['text.txt'], 'potential.': ['text.txt']}
3.电话号码提取器
编写一个程序,从给定的所有文本文件中提取电话号码。这个任务并不容易,不同国家的电话号码书写格式超过几十种(请参考en.wikipedia.org/wiki/Nationnal_conventions_for_writing_telephone_numbers )。你能设计一个正则表达式来捕获它们吗?