如何使用正则表达式替换匹配保留大小写?

cwd*_*cwd 6 regex

如何使用单个正则表达式替换所有单词townvillage保留每个匹配的第一个字母的大小写?

输入示例:

Towns are small cities. I live in a town.
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Villages are small cities. I live in a village.
Run Code Online (Sandbox Code Playgroud)

tch*_*ist 4

$_ = "Towns are small cities. I live in a town.\n";

s{ \b (?: (T)|(t) ) own       }
 { $1 ? "Village" : "village" }xge;

print;

# prints: Villages are small cities. I live in a village.
Run Code Online (Sandbox Code Playgroud)