从C#

时间:2015-07-21 15:18:05

标签: c# regex

/abcd1/ef/gh001/d

将以上一行读入字符串(String test)

我想在abcd

之后删除号码

所需的输出为/abcd/ef/gh001/d

我使用了以下代码

test = Regex.Replace(test, "[0-9]", "");

但它会删除该行中的所有数字

/abcd/ef/gh/d

请帮助!!

4 个答案:

答案 0 :(得分:3)

由于您知道数字所在的位置,因此您可以对表达式进行小幅调整,使其变为:test = Regex.Replace(test, "(abcd)[0-9]+", "$1");

此表达式将匹配abcd1并将abcd放在一个组中。之后通过$1访问此论坛,因此基本上您将abcd1替换为abcd

另一种选择是test = Regex.Replace(test, "abcd[0-9]+", "abcd");,它可以做同样的事情。

答案 1 :(得分:1)

您可以使用positive lookbehind确保仅替换abcd后紧跟的数字:

test = Regex.Replace(test, @"(?<=abcd)\d+", "");

在上面的示例中,仅当一个或多个数字\d+紧跟abcd字符串后才会匹配。

Demo.

答案 2 :(得分:0)

在我的情况下,文本abcd不是常量 - 文本可以是任何

example1     /abcd1/ef/gh001/d
example2     /tmcy1/ef/gh001/d

但字符串的位置不变。它始终位于//

之间的第一个位置
/**abcd1**/ef/gh001/d

答案 3 :(得分:0)

您可以使用以下正则表达式替换:

(?i)^(/[a-z]+)\d+(.*)

并替换为$1$2

请参阅demo