Задача №3605. Только буквы или только цифры

Построить пару reg. exp.-ов, которая за один проход заменит все фрагменты вида \texttt{...} (где ... — непустая последовательность, состоящая или из одних только латинских букв, или из одних только десятичных цифр) на фрагменты вида \begin{bfseries}...\end{bfseries} (где «...» в замене — то, что было найдено при поиске).

«Честными» считаются только решения, использующие для каждой строки ровно одну регулярную замену. То есть, «сначала пройти по строке и позаменять только фрагменты из цифр, а потом пройти по только что полученному результату ещё раз и позаменять только фрагменты из букв» вообще-то является правильным решением, но именно здесь и сейчас считается читерством.

Рекомендуется решать задачу не «с нуля», а менять регулярные выражения (и только их) в следующей Java-программе:


import java.util.*;
import java.io.*;

public class Main {
// Изменять регулярное выражение здесь
static String regexp="a+b+c";
static String replacement="QQQ"; // и здесь

public static void main(String[] args) throws Exception{
Scanner in=new Scanner(System.in);
PrintWriter out=new PrintWriter(System.out);
String str;
while(in.hasNextLine() )
{
str=in.nextLine();
str=str.replaceAll(regexp, replacement);
out.println(str);
out.flush();
}
out.close();
}
}

Входные данные

Любой текст, состоящий из любого количества любых непустых строк. Все строки, включая последнюю, завершаются символом перевода строки. Все символы входного файла (кроме переводов строки) имеют ASCII-коды в диапазоне от 32 до 127.

Если отсылать указанную java-программу, меняя только регулярные выражения, об этом можно не беспокоиться — всё получится само.

Выходные данные

Текст, состоящий из того же количества строк, но с выполненной заменой.

Если отсылать указанную java-программу, меняя только регулярные выражения, об этом можно не беспокоиться — всё получится само.

Примечание

Не забывайте, что в джавовских строках (как и в сишных) бэкслэш имеет специальное значение, а чтобы ввести в джавовскую строку именно сам бэкслэш, его надо написать дважды. Например, если «любая цифра» обозначается в регулярном выражении как «\d», то в джавовской строке должно быть «\\d». Если надо искать вхождения бэкслэша в обрабатываемый текст, его приходится писать четыре раза подряд (один раз удвоить, потому что этого требует синтаксис регулярного выражения, а потом ещё раз, потому что этого требует синтаксис джавовских строк).

Автор задачи знает, что вообще-то \texttt соответствует ttfamily, а не bfseries. Но, к сожалению, ошибка была замечена только когда уже было несколько успешных решений именно с bfseries...

Примеры
Входные данные
Variables \texttt{i},
\texttt{j} and \texttt{k}
are commonly used as integer counters.
Here, \texttt{R}, \texttt{R0}
and \texttt{R0after} are floating-point.
\texttt{a007} is a \texttt{string}.
\texttt{777} is an integer constant.
Выходные данные
Variables \begin{bfseries}i\end{bfseries},
\begin{bfseries}j\end{bfseries} and \begin{bfseries}k\end{bfseries}
are commonly used as integer counters.
Here, \begin{bfseries}R\end{bfseries}, \texttt{R0}
and \texttt{R0after} are floating-point.
\texttt{a007} is a \begin{bfseries}string\end{bfseries}.
\begin{bfseries}777\end{bfseries} is an integer constant.
Сдать: для сдачи задач необходимо войти в систему