Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net C#正则表达式替换除abc以外的所有字母_.net_Regex_String_Visual Studio_C# 4.0 - Fatal编程技术网

.net C#正则表达式替换除abc以外的所有字母

.net C#正则表达式替换除abc以外的所有字母,.net,regex,string,visual-studio,c#-4.0,.net,Regex,String,Visual Studio,C# 4.0,我在C#中尝试了一些组合,但没有成功 我想用空字符串替换字符串中的任何字母表,除非字符串包含:abc作为最后4个字符 Test123将变为123 Testabc123将变为123 测试:abc123将变为123 Test123:abc将变为123:abc Testabc123:abc将变为123:abc 在上面的示例中,字母表被替换为空字符串,除了:abc是最后4个字符,然后数字:abc没有被空字符串替换 你能推荐合适的正则表达式吗?如果用空字符串替换,正则表达式/^(?:(?!:abc$)\D

我在C#中尝试了一些组合,但没有成功

我想用空字符串替换字符串中的任何字母表,除非字符串包含:abc作为最后4个字符

Test123
将变为
123

Testabc123
将变为
123

测试:abc123
将变为
123

Test123:abc
将变为
123:abc

Testabc123:abc
将变为
123:abc

在上面的示例中,字母表被替换为空字符串,除了:abc是最后4个字符,然后数字:abc没有被空字符串替换

你能推荐合适的正则表达式吗?

如果用空字符串替换,正则表达式
/^(?:(?!:abc$)\D)+/gm
几乎可以工作。正如您在Regex101上看到的,它将匹配字符串的所有部分,除了数字和行尾的
:abc
,但由于某种原因,一旦找到数字,它将停止搜索。因此,
123Test
将不受影响,
Test123abc
将变成
123abc


编辑:删除插入符号(行首)可以修复它,但它还包括
:abc
,因此需要它。

您的任务仍然不太清楚。字符串中可以有多少个数字组?某些数字是否始终在前面
:abc
?字符串是表示单行还是希望它是多行并在每行中进行替换

如果只在单个字符串上使用,请尝试

Regex.Replace(s,@“[^\d]+(\d*:abc$)|[^\d]+”,“$1”)

这个方法背后的思想很简单:如果非数字部分以(可选)一些数字结尾,并且位于行的末尾(这样的子字符串将与
|
之前的模式的第一部分匹配),则保留它们(
$1
);否则(子字符串由模式的最后一部分匹配)将不从此匹配中保留任何内容

另外,一般来说,正则表达式在“否定模式”方面不是很好,有时更容易卷起一些代码。或作为:

有些人在遇到问题时会思考
“我知道,我会使用正则表达式。”
现在他们有两个问题

那有多难呢

静态字符串替换alphaexceptabc(字符串src)
{
常量字符串preserveEndPattern=“:abc”;
var res=新的StringBuilder(src.Length);
对于(int i=0;i
“我想替换字符串中的任何字符”是否
123
现在不是字符?您的示例中没有一个具有
:abc
作为最后4个字符。@chris85:倒数第二个示例具有。但我们不清楚最后一个例子中应该发生什么,它清楚地发生了什么not@MattBurland啊,错过了一个。仍然不是一个好的示例集,因为所有字符串都由于某种原因被转换。示例与所要求的内容相比有点混淆。你要找的是像/*?(:abc)$/$1/这样的东西吗?