у меня есть несколько вариантов
a. firms and government.
b. households and firms.
c. analyzing available data.
d. being objective.
Я хочу заменить их в следующей форме
A. Firms and government.
B. Households and firms.
C. Analyzing available data.
D. Being objective.
Вот моя попытка регулярного выражения на regex101
Найдите \t[a-z]. \t
и замените на [\U\1]
.
Хотя я могу использовать простую замену в АЭС, а. к А. к д. к D. но режим regx должен быть более эффективным.
Notepad++ или VSCode напрямую не поддерживают замену текста заглавными буквами. Для этого вам нужно написать скрипт:
Регулярное выражение, которое будет соответствовать нескольким вариантам:
'[*][*](\w).\s+(\w)(.+)'
И весь код Python для замены их заглавной формой выглядит следующим образом:
text = """
**a. firms and government.**
**b. households and firms.**
**c. analyzing available data.**
**d. being objective.**
"""
import re
pattern = r'[*][*](\w).\s+(\w)(.+)'
def replace_func(match):
return f'**{match.group(1).upper()}. {match.group(2).upper()}{match.group(3)}'
result = re.sub(pattern, replace_func, text)
print(result)
Вы можете использовать
Найдите что: ^\h*([a-z]\.)\h*([a-zA-Z])
Заменить на: \U$1 $2
Посмотрите демонстрацию регулярных выражений .
Подробности
^
- начало линии (на АЭС)\h*
— любые ноль или более горизонтальных пробелов.([a-z]\.)
— Группа 1: буква ASCII (строчная, но она может соответствовать и верхнему регистру, если вы выберете опцию «Согласовать регистр»)\h*
— любые ноль или более горизонтальных пробелов.([a-zA-Z])
— Группа 2: любая буква ASCII.\U$1 $2
— \U
переводит следующие символы в верхний регистр, а $1
/$2
обозначают текст, захваченный в соответствующие группы.