如何用Regex/Notepad++将带冒号的大写文本转为加粗首字母大写格式
一步正则实现带冒号大写文本转首字母大写加粗格式
正则匹配与替换方案
根据不同正则工具的支持特性,提供两种一步完成的实现方案:
方案1:支持回调函数的工具(如Python、VS Code高级替换、Sublime Text)
- 匹配正则:
\b([A-Z]+(?:\s[A-Z]+)*): - 替换逻辑:捕获全大写文本后,将其转换为每个单词首字母大写、其余小写的格式,再用加粗标记包裹,保留末尾冒号。
以Python为例的代码实现:import re subtitle = """HELLO: This is a test. GOOD MORNING: How are you? ERROR CODE: Please check your input.""" def proper_case_convert(match): text = match.group(1) return f"**{text.title()}:**" result = re.sub(r'\b([A-Z]+(?:\s[A-Z]+)*):', proper_case_convert, subtitle) print(result)
方案2:纯正则替换(PCRE兼容工具,如Notepad++、RegexBuddy)
- 匹配正则:
\b([A-Z])([A-Z]*)(?:\s([A-Z])([A-Z]*))*: - 替换表达式:
注:该语法依赖PCRE引擎的**\u$1\L$2(?: \u$3\L$4)*:**\u(单个字符转大写)和\L(后续字符转小写)修饰符,确保多单词文本的每个首字母大写、其余字母小写。
示例验证
原字幕内容:
HELLO: This is a test.
GOOD MORNING: How are you?
SYSTEM ALERT: Connection lost.
替换后效果:
Hello: This is a test.
Good Morning: How are you?
System Alert: Connection lost.
关键逻辑说明
- 匹配规则:
\b确保匹配完整单词边界,[A-Z]+(?:\s[A-Z]+)*精准匹配由空格分隔的连续全大写单词序列,最后锁定末尾的冒号:。 - 格式转换:通过首字母大写+其余小写的规则修正文本格式,同时用
**包裹实现加粗效果,一步完成所有需求。
内容的提问来源于stack exchange,提问作者Hank K
相关产品推荐
相关产品推荐

