Используйте функцию re.escape()
для этого:
escape (string)
Возвращаемая строка со всеми неалфавитными спицами; это полезно, если вы хотите сопоставить произвольную литеральную строку, которая может иметь в ней метасимволы регулярного выражения.
blockquote>Простейший пример, поиск любого присутствия предоставленной строки, необязательно сопровождаемого 's', и вернуть объект соответствия.
def simplistic_plural(word, text): word_or_plural = re.escape(word) + 's?' return re.match(word_or_plural, text)
Одной из распространенных причин является выяснение того, являются ли два интерфейса IA*
и IB*
фактически указателями на один и тот же базовый объект. Если вам это нужно, используйте актерский состав.
IIRC, даже в случае множественного наследования с повторяющимся не виртуальным основанием возможно иметь два IA*
указателя, которые сравнивают неравный, но указывают на один и тот же объект - потому что они указывают на два разных IA
подобъекта.
Когда у вас есть что-то вроде:
template<typename X, typename Y>
bool operator==(const X* px, const Y* py) {
return dynamic_cast<void*>(px) == dynamic_cast<void*>(py);
}