2015-02-27 4 views
0

Я делаю проверку орфографии учебник в Python и использует это регулярное выражение:Разделить строку, используя регулярное выражение, как игнорировать апостроф?

import re 
def split_line(line): 
    return re.findall('[A-Za-z]+(?:\`[A-Za-z)+)?',line) 

мне было интересно, если вы могли бы помочь мне изменить эту функцию так, он будет игнорировать ', то есть, если я входная строка he's я будет получать ['he's'], а не ['he','s'].

+4

Он даже скомпилирован? Этот '[A-Za-z]' должен быть '[A-Za-z]' (закрывающая скобка неверна). – Marcin

+0

Можете ли вы показать нам пример строки и какой должен быть ожидаемый результат? – alfasin

+0

Вы хотите апостроф ', но используйте обратный запрос 'почему ?. '[A-Za-z] + (?: \ '[A-Za-z] +)?' Должен сделать трюк. – georg

ответ

1

Прежде всего вам нужно исправить исходное выражение, заменив ) на ], как упоминалось в Marcin. Тогда просто добавить ' в список разрешенных символов (замаскировано задней косой чертой):

import re 
def split_line(line): 
    return re.findall('[A-Za-z\']+(?:\`[A-Za-z]+)?',line) 

split_line("He's my hero") 

#["He's", 'my', 'hero'] 

Конечно, это не будет рассматривать любые крайние случаи, когда апостроф в начале или в конце слова ,

+0

Cheers Matt perfect. : P, из-за чего я задаю вопрос, как заставить его рассмотреть случаи краев. – JensD

+0

Добро пожаловать. Рад, что смог помочь :) – Matt

Смежные вопросы