如何在含不区分大小写Id的行中将string替换为int(正则分组问题)
解决正则替换:将含Id的行中的string替换为int
我来帮你搞定这个正则替换的问题!你之前的思路方向是对的,但分组的方式没抓住核心——我们需要精准定位到要替换的string,同时确保当前行包含不区分大小写的Id。
正确的正则方案
根据你的需求,我们可以分两种场景实现(适配不同的正则工具,比如VS、Notepad++、JetBrains IDE等):
方案1:精准捕获分组(推荐,兼容性强)
开启不区分大小写模式(工具里一般有"Match Case"的勾选框,取消它就好),使用以下正则:
- 查找:
^(public\s+)string(\s+.+)$ - 替换:
$1int$2
方案2:正向预查(更灵活,适合复杂场景)
同样开启不区分大小写模式,用预查确保当前行包含Id,再定位string:
- 查找:
(?i)^(?=.*Id)(public\s+)string(\s+.+)$ - 替换:
$1int$2
为什么你的原正则没生效?
你之前写的^(.*(string).*(Id).*)$分组逻辑有问题:
\1是整个匹配的行,\2是捕获到的string,\3是捕获到的Id- 这种分组方式没法直接把
string替换成int,因为你没法单独保留string前后的内容
实际替换效果示例
拿你的代码行举例:
- 原行:
public string ID {get; set} - 匹配后,
$1是public,$2是ID {get; set} - 替换后结果:
public int ID {get; set}
所有包含Id(不区分大小写,比如IdSite、ID、IdParent)的行都会被正确替换,其他行(比如public string PageType {get; set})则不会被修改。
内容的提问来源于stack exchange,提问作者Gerald Hughes
相关产品推荐
相关产品推荐

