You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条Perl正则在SQL INSERT指定组的大写字母前加空格

解决SQL INSERT语句中特定字段的大写字母加空格问题

看起来你卡在了只修改第二个N'...'字段里的驼峰命名、同时保持第一个字段不变的需求上——之前的正则只处理了一处大写字母,确实让人头疼。

这里给你一个单条Perl正则表达式的解决方案,能一次性处理目标字段里所有需要加空格的大写字母:

s/(, N')([^']+)/$1 . ($2 =~ s/(?<=[a-z])([A-Z])/ $1/gr)/e;

拆解一下这个正则的逻辑:

  • (, N'):精准定位到目标字段的开头(, N'),把这部分捕获为$1,后续原样放回
  • ([^']+):捕获N'到下一个'之间的所有内容(也就是你要修改的驼峰字符串),记为$2
  • /e修饰符:让Perl执行替换部分的代码逻辑,而不是直接替换字符串
  • 内部的$2 =~ s/(?<=[a-z])([A-Z])/ $1/gr:对捕获到的驼峰字符串做全局替换——匹配前面是小写字母的大写字母,在它前面插入空格;gr确保替换所有符合条件的字符,并且返回修改后的结果

用你的例子测试:
原字符串:, 'DateOfBirth' , N'DateOfBirth')
执行后得到:, 'DateOfBirth' , N'Date Of Birth')

为什么之前的正则没生效?

你之前写的(, N'.+)([a-z])([A-Z])(.+)只能匹配到一处符合小写+大写的组合(也就是fB),而且没有全局替换的逻辑,所以只能修改最后一处大写字母。这个方案通过嵌套替换和全局修饰符,一次性处理所有需要调整的位置。

内容的提问来源于stack exchange,提问作者Bob Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:56:21