Я хочу сокращать имена людей, используя замены регулярных выражений, и ниже приведено руководство.
- Имена разделяются словом
and
. - Существует уникальная запятая
,
в каждом имени, которое разделяет фамилию и имя. - Для каждой части имени оставляйте только его начальную букву.
- Удалите все запятые
,
, точки .
и гипс -
. - Заменить каждое слово
and
на гипс -
. - Удалить все пробелы
.
Ниже приведен список примеров сокращения отдельных имен.
Gelfand, Israel
-> GelfandI
de Giorgi, Ennio
-> deGioriE
Jones, Vaughan Frederick Randal
-> JonesVFR
Serre, Jean-Pierre
-> SerreJP
Siegel, Carl L.
-> SiegelCL
Piatetski-Shapiro, Ilya
-> PiatetskiShapiroI
Вот пример сокращения списка имен.
Gelfand, Israel and de Giorgi, Ennio and Jones, Vaughan Frederick Randal and Serre, Jean-Pierre and Siegel, Carl L. and Piatetski-Shapiro, Ilya
->
GelfandI-deGioriE-JonesVFR-SerreJP-SiegelCL-PiatetskiShapiroI
Это довольно легко сделать, используя конечную цепочку замен регулярного выражения. Однако я столкнулся с некоторыми дополнительными ограничениями.
- Не допускается использование любого из четырех символов
/\[]
. - Пустая строка не допускается.
В частности, эти два ограничения подразумевают, что:
- Побег невозможен;
- Удаление любых совпавших узоров, особенно точек
.
, не тривиально.
Я хотел бы знать, возможно ли это сделать при этих ограничениях. Меня особенно интересуют регулярные выражения в Java, но приветствуются любые диалекты.