How can I use regex to replace matching entries?

How can I use one regular expression to replace all town words with village , preserving the case of the first letter of each match?

Input Example:

 Towns are small cities. I live in a town. 

Required Conclusion:

 Villages are small cities. I live in a village. 
+6
source share
1 answer
 $_ = "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. 
+3
source

Source: https://habr.com/ru/post/900796/


All Articles