[英]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.