python正则表达式匹配返回完整句子
我试图写一个正则表达式,在一系列句子中找到“squirrel”这个词。表达式应返回包含单词“squirrel”的完整句子列表 包含“松鼠”一词的句子可能类似于以下句子: 松鼠有一条长尾,比如说长尾。python正则表达式匹配返回完整句子,python,regex,Python,Regex,我试图写一个正则表达式,在一系列句子中找到“squirrel”这个词。表达式应返回包含单词“squirrel”的完整句子列表 包含“松鼠”一词的句子可能类似于以下句子: 松鼠有一条长尾,比如说长尾。 猫(a)n(d)松鼠(a)n(d)兔子(a)n(d)兔子(a)n(d)兔子(a)n(d)() 松鼠有一条尾巴 我当前的re是这样的 word_only += re.findall('(.*?' + word + '?!\S)', sentence) word_only += re.findall
猫(a)n(d)松鼠(a)n(d)兔子(a)n(d)兔子(a)n(d)兔子(a)n(d)()
松鼠有一条尾巴 我当前的
re
是这样的
word_only += re.findall('(.*?' + word + '?!\S)', sentence)
word_only += re.findall('.*?' + word + '\S+', sentence)
但它只返回单词(“squirrel”)前面的内容,而不返回后面的内容
有什么想法吗?谢谢如果我理解正确,您有一个字符串列表,每个字符串包含一个句子
squirrel_sentences = []
for sentence in sentences:
if re.match(word):
squirrel_sentences.append(sentence)
如果您有一个包含多个句子的单个字符串,您可以尝试此正则表达式的匹配,该正则表达式可以查找包含
squirrel
(还支持带有\a
和\Z
的第一个和最后一个句子)的各个句点之间的字符跨度:
(?:\A |)(?如果我理解正确,您有一个字符串列表,每个字符串包含一个句子
squirrel_sentences = []
for sentence in sentences:
if re.match(word):
squirrel_sentences.append(sentence)
如果您有一个包含多个句子的单个字符串,您可以尝试此正则表达式的匹配,该正则表达式可以查找包含squirrel
(还支持带有\a
和\Z
的第一个和最后一个句子)的各个句点之间的字符跨度:
(?:\A |)(?这里根本不需要使用正则表达式
#The example string:
s = '''the squirrel has a long tail (.) say (.) long tail .
cats (a)n(d) squirrels (a)n(d) rabbits (a)n(d) bunnys (a)n(d) (.)
the squirrel+has a tail'''
sentencelist = s.split(".") #split on periods
[sentence for sentence in sentencelist if sentence.find("squirrel") != -1]
#If you don't find any squirrels, hold fire!
另一方面,如果你有缩写/标题,这个脚本会分成太多的句子。当我不得不解决这样的问题时,我最终使用了一个正则表达式,如\。\s+(?=[a-Z])
,并在匹配项上拆分。这修复了缩写,例如N.A.A.C.P.,但没有标题,例如Smithers先生。我最终建立了一个标题字典,并在我完成regexing和counting之后再对句点进行细分。YMMV。这里根本不需要使用正则表达式
#The example string:
s = '''the squirrel has a long tail (.) say (.) long tail .
cats (a)n(d) squirrels (a)n(d) rabbits (a)n(d) bunnys (a)n(d) (.)
the squirrel+has a tail'''
sentencelist = s.split(".") #split on periods
[sentence for sentence in sentencelist if sentence.find("squirrel") != -1]
#If you don't find any squirrels, hold fire!
另一方面,如果你有缩写/标题,这个脚本会分成太多的句子。当我不得不解决这样的问题时,我最终使用了一个正则表达式,如\。\s+(?=[a-Z])
,并在匹配项上进行拆分。这修复了缩写,例如N.A.A.C.P.,但没有修复标题,例如Smithers先生。我最终建立了一个标题词典,并在我完成regexing和counting.YMMV之前对句点进行了子排序。您需要re.finditer
才能获得匹配组(0)
对于每一个,您都需要re.finditer
来获得匹配。组(0)
对于每一个,如果我这样做,句子被分成字符,每个字符是松鼠句子的一个元素。如果我这样做,句子被分成字符,每个字符是松鼠句子的一个元素。为什么