我正试图从黑客等级的问题中解决这个问题。这是一个机器学习问题。一开始,我试着阅读语料库文件中的所有单词,以建立字母频率。根据这个ML问题,word被定义为
Word是一个字符序列,只包含从
a到z的字母(仅小写),可以包含连字符(-)和撇号(')。单词应该以小写字母开头和结尾。
我用python编写了一个正则表达式,如下所示:
pat = "[a-z]+( ['-]+[a-z]+ ){0,}"我试着同时使用re.search()和re.findall()。这两方面我都有问题。
re.findall()的问题:
string = "HELLO W-O L-D“
re.findall()('Hello',''),('W','-D')的输出
我听不懂W-O-R-L-D这个词。在使用re.search()时,我能够正确地获得它re.search()的问题:
string =“123 hello456world789”
re.search()的输出:
“你好”
在本例中,当使用re.findall()时,我可以同时获得'hello'和'world'。发布于 2013-11-27 13:54:03
作为我张贴了你之前的问题,您应该使用re.findall() -但是无论如何,您的问题是正则表达式是错误的。见下面的示例:
>>> import re
>>> regex = re.compile(r'([a-z][a-z-\']+[a-z])')
>>> regex.findall("HELLO W-O-R-L-D") # this has uppercase
[] # there are no results here, because the string is uppercase
>>> regex.findall("HELLO W-O-R-L-D".lower()) # lets lowercase
['hello', 'w-o-r-l-d'] # now we have results
>>> regex.findall("123hello456world789")
['hello', 'world']正如您所看到的,您在提供的第一个示例中失败的原因是由于大写,您可以简单地添加re.IGNORECASE标志,尽管您提到匹配应该是小写的。
https://stackoverflow.com/questions/20244228
复制相似问题