gpt4 book ai didi

c# - 正则表达式替换一个用破折号包围的字母

转载 作者:行者123 更新时间:2023-11-30 16:04:24 24 4
gpt4 key购买 nike

我尝试用另一个字母替换一个或两个破折号包围的特定字母

例子:modif-i-ed => 已修改(-i- 被替换为 y)

a-im => eim(a-被e代替)

我试过了

Regex.Replace(word, "-?([a-zA-Z])-", new_letter)

但它会为第一个示例生成例如 modiyyed

最佳答案

问题在于,一旦第一个 - 变为可选,modif-i-ed 中就会有 2 个匹配项:f-我-。因此,有两个替换。

我建议匹配并捕获 -X- 模式之前的字母,然后在 Match 评估器中按原样返回它们,并使用 -?[a-z]- 来匹配然后替换:

(\B[a-z](?=-))|-?[a-z]-

C#:

var myLetter = "y";
var str = " modif-i-ed a-im y-i-eld";
var res = Regex.Replace(str, @"(\B[a-z](?=-))|-?[a-z]-",
m => m.Groups[1].Success ? m.Groups[1].Value : myLetter);
Console.WriteLine(res); // => modifyed yim yyeld

参见 IDEONE demo

关于c# - 正则表达式替换一个用破折号包围的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com