正则表达式查找和删除具有特定模式的字符

时间:2017-01-24 12:41:53

标签: c# regex

我有这个字符串

This is mail@mail.text #1 but page is @001# 

(001是变量,ex 01a或021等)

我想成功

This is mail@mail.text #1 but page is 001

使用此^@([0-9]{1,3})#\z,我可以找到以“@”开头的字符串,以“#”结尾,内部最多3个字符,但在整个文本中不匹配。

1 个答案:

答案 0 :(得分:2)

您需要删除class(字符串锚点的开头)并使用^反向引用将匹配替换为第1组的内容:

$1

请参阅regex demo

var str = "This is mail@mail.text #1 but page is @001#"; var result = Regex.Replace(str, @"@([0-9]{1,3})#\z", "$1"); 模式会找到@([0-9]{1,3})#\z,1到3位数(放在一个组中),然后在非常结尾处找到@#)。

另一种变化:如果值可以以数字开头并且可以跟随ASCII字母或数字,请使用

\z

如果值只能是字母数字,请使用

var result = Regex.Replace(str, @"@([0-9][0-9a-zA-Z]{0,2})#\z", "$1");