регулярное выражение соответствует первому и последнему слову или любому слову

У меня огромный файл со списком таких данных, как:

#fabulous 7.526 2301 2 #excellent 7.247 2612 3 #superb 7.199 1660 2 #perfection 7.099 3004 4 #terrific 6.922 629 1 

У меня есть файл, содержащий список предложений вроде этого:

 Terrific Theo Walcott is still shit, watch Rafa and Johnny deal with him on Saturday. its not that I'm a GSP fan, fabulous Iranian general says Israel's Iron Dome can't deal with their missiles with J Davlar 11th. Main rivals are team Poland. 

Я хочу проверить с помощью регулярного выражения следующее:

  1. если первое слово в каждом предложении совпадает с любыми словами в файле Пример, если Потрясающий, его, иранский, встречаются в файле или нет

  2. если последнее слово в предложении совпадает с любыми словами в файле. Пример: если в файле есть суббота, сказочные, ракеты, Польша, или нет

  3. если префикс 2 или 3 символа и суффикс отдельных слов в предложениях соответствует префиксу и суффиксу 2 или 3 символа в примере файла, если Ter, его, Ira, wi соответствует любому 2 или 3 префиксам слов в файле или нет. То же самое относится к суффиксу.

Я так новичок в регулярном выражении, что могу думать об этом, но не получая результат: term2.lower () – это первый столбец в файле

  wordanalysis["trail"] = found if re.match(sentence[-1],term2.lower()) else not(found) wordanalysis["lead"] = found if re.match(sentence[0],term2.lower()) else not(found) 

  • Регулярное выражение Python с вопросительным знаком literal
  • Найти весь китайский текст в строке с помощью Python и Regex
  • Как я re.search или re.match для целого файла, не читая все это в памяти?
  • Как вы переводите эту идиому регулярного выражения из Perl в Python?
  • Как написать регулярное выражение для соответствия строковому литералу, где escape является удвоением символа кавычки?
  • Преобразовать запятую в строку, но игнорировать запятую в кавычках
  • Поиск уличного адреса в строке - Python или Ruby
  • Регулярное выражение Python: включение пробела внутри диапазона символов
  • One Solution collect form web for “регулярное выражение соответствует первому и последнему слову или любому слову”

    Обновление: за удивительное предложение от @justhalf, не нужно использовать регулярное выражение для разделения слов. Удалите .lower() если вы хотите совпадение с регистром.

    Это будет соответствовать первому слову и последним словам (исключая любые знаки препинания или завершающие пробелы) в вашем списке данных:

    (^\s?\w+\b|(\b\w+)[\.?!\s]*$)

    Матчи:

     MATCH 1-1. Terrific MATCH 2-1. Saturday. 2. Saturday MATCH 3-1. its MATCH 4-1. fabulous 2. fabulous MATCH 5-1. Iranian MATCH 6-1. missiles 2. missiles MATCH 7-1. with MATCH 8-1. Poland. 2. Poland 

    Реализация:

     import re, string sentences = open("sentences.txt").read().splitlines() data = open("data.txt").read() pattern = re.compile(r"(^\s?\w+\b|(\b\w+)[\.?!\s]*$)") for line in sentences: words = line.strip().split() first = words[0].lower() last = words[-1].translate(None, string.punctuation).lower() if (re.search(first, data, re.I)): print "Found " + first + " in data.txt" if (re.search(last, data, re.I)): print "Found " + last + " in data.txt" 

    Это, вероятно, не самый элегантный способ сделать это, но вы получите эту идею.

    Код тестируется и работает, выход:

     Found Terrific in data.txt Found fabulous in data.txt 

    Кроме того, это не соответствует вашим трем критериям, проверьте это и посмотрите, работает ли он до сих пор.

    Python - лучший язык программирования в мире.