Я работаю с скриптом Python 2.7.2 для поиска списков слов внутри текстового файла, который я использую как список основных слов.с использованием регулярных выражений для исключения символов в строковом поиске?
Я вызываю скрипт в окне терминала, вводя любое количество регулярных выражений, а затем запускаю скрипт.
Итак, если я перехожу в два регулярных выражения «^ ..... $» и «. * Z», он напечатает каждое пять буквенных слов, содержащих хотя бы один «z».
Что я пытаюсь сделать, это добавить еще одно регулярное выражение, чтобы ИСКЛЮЧИТЬ символ из строк. Я хотел бы распечатать все слова, содержащие пять букв, «z», но - не - «y».
Вот код:
import re
import sys
def read_file_to_set(filename):
words = None
with open(filename) as f:
words = [word.lower() for word in f.readlines()]
return set(words)
def matches_all(word, regexes):
for regex in regexes:
if not regex.search(word):
return False
return True
if len(sys.argv) < 3:
print "Needs a source dictionary and a series of regular expressions"
else:
source = read_file_to_set(sys.argv[1])
regexes = [re.compile(arg, re.IGNORECASE)
for arg in sys.argv[2:]]
for word in sorted(source):
if matches_all(word.rstrip(), regexes):
print word,
Какие модификаторы можно положить на регулярных выражений, которые я прохожу в программу, чтобы для меня, чтобы исключить определенные символы из строки печатаемых?
Если это невозможно, что должно быть реализовано в коде?
Это именно то, что я искал! Не могли бы вы объяснить, что делает каждый символ в «^ [^ y] * $? Я только начинаю работать с компьютерным программированием/Python, и я видел каждый из этих символов в документации для регулярных выражений, но не мог подумать, чтобы объединить их так же, как и для этого результата. –
Я отредактировал, чтобы добавить объяснение ко всему. – piojo
Это очень полезное объяснение спасибо. Можете ли вы объяснить, как сделать так, чтобы вы могли комбинировать 2 выражения регулярного выражения 'NOT'/exclude? Например, как бы это выглядело, если бы вы хотели сопоставить некоторую строку, а не y, а также не q? – EazyC