2012-08-29 2 views
1

Я хотел бы сопоставить строку в некоторых скобках. Моя строка может иметь некоторые апострофы. Я использую следующий шаблон для сопоставления, но это не подбирает строку, и я действительно не понимаю, почему - любая идея?Проблема, соответствующая строке, содержащей апостроф

pattern = re.compile('<([\w\s\']+)>', re.IGNORECASE) 

например, <Let's rock!> даст Let's rock!

ответ

5

У вас нет проблемы с апострофом, у вас есть проблема с восклицательным знаком. Восклицательный знак не является ни словом (\w), ни пробелом (\s), ни апострофом. Поэтому вы должны добавить ! в свой класс символов, если хотите его разрешить.

+0

ok Я думал, что \ w будет соответствовать! - благодаря! – tiguero

+0

'\ w' - это только буквы, цифры и символ подчеркивания (хотя в зависимости от вашего языка и версии« буквы »и« цифры »могут означать интерпретацию этих слов ASCII или интерпретацию Юникода) – hobbs

2

Ты не можешь уйти с простой ., например, '<(.+)>'?

Кроме того, это обычно проще, если вы не используете одиночные кавычки для строки, если вам нужно встроить одну цитату внутри, например, "<([\w\s']+)>".

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