Понякога използването на модула re е изобщо ненужно. Ако търсите съвпадение с фиксиран символен низ, или един единствен клас от символи, и в същото време не използвате разните възможности на re като флага IGNORECASE, тогава пълната мощ на регулярните изрази е ненужна. Модулът string предлага няколко функции за извършване на операции с фиксирани символни низове, които обикновено са много-по бързи, понеже реализацията им представлява един малък цикъл на C, който е оптимизиран за тази задача, за разлика от голямата машина за регулярни изрази с общо предназначение.
Пример за това може да бъде заместването на един фиксиран символен низ с друг.
Например, можете да заместите "word" с "deed". Като че ли
re.sub()
изглежда подходяща функция за тази цел, но обърнете внимание
на string.replace(). Забележете, че string.replace() ще
замести и "word" вътре в думите, превръщайки "swordfish" в
"sdeedfish", но и наивният РИ word ще стори същото. (За да
избегнете заместването в части от думи, образецът трябва да бъде \
bword\b, така че да изисква "word" да е заобиколен от граници на
дума от двете страни. Това поставя задачата отвъд възможностите на модула
string.)
Друга често срещана задача е изтриването на всяко срещане на даден единичен
символ, или заместването му с друг единичен символ. Можете да осъществите това
с нещо като re.sub('\n', ' ', S)
, но string.translate() е
в състояние да извърши и двете задания, при това много по-бързо, отколкото
изобщо някога ще успее каквъвто и да било регулярен израз.
Накратко, преди да се обърнете към модула re, проверете дали задачата ви може да се реши с по-бързия и по-прост модул string.