如何提取特定字符连接的两个单词首字母并保留连接符?
解决方案
你当前的正则会把单词间的下划线也替换掉,只需调整替换规则,保留匹配到的下划线即可。
修正后的代码:
$str = 'hello_world'; echo preg_replace("/(\w)[^_]*(_|$)/", "$1$2", $str);
正则说明
(\w):捕获每个单词的首字母,作为分组1[^_]*:匹配首字母之后到下划线/字符串结尾的所有非下划线字符(_|$):匹配单词后的下划线(作为分组2)或者字符串结束位置- 替换为
$1$2:保留首字母和对应的下划线,最终就能得到h_w的结果。
如果要处理多个下划线分隔的单词(比如foo_bar_baz转为f_b_b),这个正则同样适用。
内容的提问来源于stack exchange,提问作者Anas Radi
相关产品推荐
相关产品推荐

