正则表达式的相关题目,匹配问题(python3)

实验语料:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、k # i 9 h ~计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。这一学科的发展经历了20世纪40年代的基础期。1957至1970年符号与随机方法时期。以及后来的经验主义和大融合(1983-1999),直至当今的机器学习。
4.1利用re.search ( regexI ) { [ ( C b ,string )方法打印文本中包含:“自然语言”这个字符串的行内容;打印以“期”字结尾的句子。

4.2利用正则表达式和findall()两种方式抽取m a s 4 @ `文本中的数字年份。
4.3 简答:自然语言处理的难点有哪些?自然语言处理处理的层次?

回答

import re

匹配数字年

year_pattern="(\d{1,4}年)"

匹配月 月比较特殊 可能会出现01月 1月这两种情况 还有10月,12月

month_q 5 Y ) x 5 q b }pattern=L u 4 ` P 0"(([0?][1-9])月)|(([1?][0-2])月)|([( A j E c N1-9]月)"

匹配日 保证匹配的数字是1-31,暂未考虑单双月和2月 闰年

day_pat2 3 X 3 x X O 3 Gtern="([0?][1-9]日)|([1?][0-9]日)|([2?][1-9]日)|([3][0-1]日)"

date_pattern="(\d{1,4}年)((([0?][1-9])月)|((4 @ }[1?][0-2])A # @ ] Z m O月)|([1-9]月)?)(q Q 2([0?][1-9]日)|([1?]! x T[0-9]日)|([2?][1-9]日)|([3][0-1]日)?)"

def get_date(val):
res=re.search(date_pattern,val)
if res:
return res.group()
return None

def findall(content# W 3 , m q x):
rZ w Q * { g jee = re.compile(date_pattern)
result = re.findall(ree,content)
if rV ; , G 9 qesult: #是个list
return result

def reG s W 8 Uadtxt():
youtxtpath = "./aa.txt"
with open(youtxtpath,H V ! o I 0 i W"r") as , ) j p A [ @ y f:
line = f.readline()
result = re.search(r"自然语言 - $ ~ r # ] U",line_ ~ & J)
if result: #匹配到
pr0 | # m Z r e SintP t 2 @ g o(line) #打印文本中包含:“自然语言”这个字符串的行内容
result = re.searc? v O Q ! 5h(r"[,.?!].*期[,.?!]",line) #打印以“期”字结尾的句子。 标点符号有多岁自己处理
if result:
print(line)

自然语言处理的难点:错别字,新词,语言与行为不一致啊,等等。。。
自然语言处理处理的层次: 1、语音层次2、词形层次3r b x A 7 z ;、词汇层次4、句法层次5、语义层次6、语用层次7、语境层次