[英]Regular Expression to replace one letter surrounded with dashes
我尝试用另一个字母替换一个或两个破折号包围的特定字母
示例 :modif-i-ed => modifieded(-i-替换为y)
a-im => eim(a-替换为e)
我试过了
Regex.Replace(word, "-?([a-zA-Z])-", new_letter)
但它产生了例如第一个例子的modiyyed
。
问题是,一旦第一-
变得可选的,有2个匹配的内部modif-i-ed
: f-
和i-
。 因此,有两个替代品。
我建议在-X-
模式之前匹配和捕获字母,然后在匹配评估器中按原样返回它们,并使用-?[az]-
匹配然后替换:
(\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演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.