RegEx在C#中替换字符串中的特定字母

时间:2016-02-03 06:36:28

标签: c# regex pattern-matching

我需要一个RegEx来在字符串中用“ł”替换所有出现的“l”。 只有在以下情况下才能进行更换:

1)z之前有l

2).

之后应该有一个数字或l

例如:

1)如果字符串为abc zl12,200,则输出应为abc zł12,200

2)如果字符串为zl.00,则输出应为zł.00

3)如果字符串为adbc zlopr,则输出应为adbc zlopr

谢谢!

2 个答案:

答案 0 :(得分:4)

你可以做这样的表达。

<强> Live Demo

string output = Regex.Replace(str, @"(z)l(\d+|\.)", "$1ł$2");
  • (z)将查找z并由$ 1
  • 标识
  • l是您要用ł
  • 替换的角色
  • (\ d + |。)代表数字或点.,由$ 2标识

()用于制作细分,我们使用$1$2来获取细分,并生成输出字符串以及替换字符。

答案 1 :(得分:2)

使用look around断言的另一种解决方案。

正则表达式(?<=z)l(?=\d|\.)

解释

l(?=\d|\.)此部分将匹配l后跟digit或句点.

(?<=z)将查看l前面是z

所以你的代码将是

string output = Regex.Replace(str, @"(?<=z)l(?=\d|\.)", "ł");

http://shiny.rstudio.com/articles/html-ui.html Regex101 Demo