Существует не (точно корректен) решение, которое будет работать за постоянное количество времени, так как 1/7 является бесконечным десятичным числом в основе 5. Одно простое решение должно было бы использовать выборку отклонения, например:
int i;
do
{
i = 5 * (rand5() - 1) + rand5(); // i is now uniformly random between 1 and 25
} while(i > 21);
// i is now uniformly random between 1 and 21
return i % 7 + 1; // result is now uniformly random between 1 and 7
Это имеет ожидаемое время выполнения 25/21 = 1,19 повторения цикла, но существует бесконечно мало маленькая вероятность цикличного выполнения навсегда.
TextPad позволит вам выполнить эту операцию.
пример:
test this sentence
Найти что: \ ([^] * \) \ (. * \)
Замените на: \ U \ 1 \ E \ 2
\ U
приведет к тому, что все следующие символы будут верхними
\ E
выключит \ U
результат будет:
TEST this sentence
EditPad Pro и PowerGREP имеют уникальная функция, позволяющая изменить регистр обратной ссылки.
\ U1
вставляет первую обратную ссылку в верхнем регистре,\ L1
в нижнем регистре и\ F1
с первым символом в прописные буквы и остаток в строчные. Наконец,\ I1
вставляет его с первой буквой каждого слова заглавными буквами, а остальные буквы в строчные.
Источник: Goyvaerts, Jan (2006). Регулярные выражения: полное руководство . Lulu.com. стр. 35 . ISBN 1411677609. Google Книги. Проверено 25 июня 2010 г.