2016-03-25 38 views
0

Ben, sadece bir kelimeyi bir kelimeyi aramak ve bütün çizgi değil dönebilirsiniz nasıleşleşen sözcük sınırları 2.7

with open('/Users/Statistical_NLP/Project/text.txt') as f: 
    haystack = f.read() 

with open('/Users/Statistical_NLP/Project/test.txt') as f: 
    for line in f: 
     needle = line.strip() 
     pattern = '^.*{}.*$'.format(re.escape(needle)) 
     for match in re.finditer(pattern, haystack, re.MULTILINE): 
      print match.group(0) 

var olduğu metinden bir çizgi dönebilirsiniz aşağıdaki kodu var 3 kelimeden sonra ve bu sözcükten önceki üç kelime.

Bir şey benim kodunda bu satırda değiştirilmelidir:

pattern = '^.*{}.*$'.format(re.escape(needle)) 

Teşekkür aşağıdaki regex istediğini elde etmenize yardımcı olacaktır

+0

varsa sonra örnek metin ve görmek istediğiniz çıkışı ile birlikte yazı güncellemek için öneririm önce

şu 3 kelime eşleşir. – Saleem

cevap

1

çok.

((?:\w+\s+){3}YOUR_WORD_HERE(?:\s+\w+){3}) 

Düzenli ifadeyi daha iyi anlamak için, bir sonraki sayfaya gitmenizi ve bununla denemenizi öneririm.

https://regex101.com/r/eS8zW5/3

Bu, daha önce üç kelime maç eşleştirilmiş sözcük ve sonra üç kelime olacaktır. ve onlar

((?:\w+\s+){0,3}YOUR_WORD_HERE(?:\s+\w+){0,3}) 
+0

'\ w + \ s + \ w + \ s + \ w + \ s + + w + \ s + \ w +' bu yol benim için çalışır, neden RegEx sürüm3 çalışmadı merak ediyorum! –