我有这个字符串
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个字符,但在整个文本中不匹配。
答案 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");