Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
C# 正则表达式模式,用于过滤掉任何不符合';不匹配_C#_.net_Regex_Regex Negation - Fatal编程技术网

C# 正则表达式模式,用于过滤掉任何不符合';不匹配

C# 正则表达式模式,用于过滤掉任何不符合';不匹配,c#,.net,regex,regex-negation,C#,.net,Regex,Regex Negation,使用Regex.Replace(mystring,@“[^MV:0-9]”,“将删除任何不是M、V、:、或0-9(\d)的字母。问题是我想删除任何不是MV:的字母,然后是数字 我需要用零替换任何不是此模式的内容: Starting String | Wanted Result --------------------------------------------------------- sdhfuiosdhusdhMV:1234567890sdf

使用
Regex.Replace(mystring,@“[^MV:0-9]”,“
将删除任何不是
M
V
、或0-9(\d)的字母。问题是我想删除任何不是
MV:
的字母,然后是数字

我需要用零替换任何不是此模式的内容:

Starting String                        | Wanted Result
---------------------------------------------------------
sdhfuiosdhusdhMV:1234567890sdfahuosdho | MV:1234567890
MV:2138911230989hdsafh89ash32893h8u098 | MV:2138911230989
809308ej0efj0934jf0934jf4fj84j8904jf09 | Null
123MV:1234321234mnnnio234324234njiojh3 | MV:1234321234
mdfmsdfuiovvvajio123oij213432ofjoi32mm | Null
但我所得到的是:

Starting String                        | Returned Result
---------------------------------------------------------
sdhfuiosdhusdhMV:1234567890sdfahuosdho | MV:1234567890
MV:2138911230989hdsafh89ash32893h8u098 | MV:213891123098989328938098
809308ej0efj0934jf0934jf4fj84j8904jf09 | 809308009340934484890409
123MV:1234321234mnnnio234324234njiojh3 | 123MV:12343212342343242343
mdfmsdfuiovvvajio123oij213432ofjoi32mm | mmvvv1232134232mm
即使有一个正则表达式模式,我还是最好使用以下内容:

if (Regex.IsMatch(strMyString, @"MV:"))
{
    string[] strarMyString = Regex.Split(strMyString, @"MV:");
    string[] strarNumbersAfterMV = Regex.Split(strarMyString[1], @"[^\d]");
    string WhatIWant = strarNumbersAfterMV[0]
}
如果我选择了后一种选择,我会有:

        string[] strarNumbersAfterMV = Regex.Split(strarMyString[1], @"[^\d]");
第一次更改数字时只进行一次拆分?(它总是以
MV:
后面的数字开头)

你就不能这样做吗:

string matchedText = null;
var match = Regex.Match(myString, @"MV:[0-9]+");
if (match.Success)
{
    matchedText = Value;
}
Console.WriteLine((matchedText == null) ? "Not found" : matchedText);
这应该会给你你所需要的。

你就不能这样做:

string matchedText = null;
var match = Regex.Match(myString, @"MV:[0-9]+");
if (match.Success)
{
    matchedText = Value;
}
Console.WriteLine((matchedText == null) ? "Not found" : matchedText);

这应该会提供您所需要的信息。

如果我想知道字符串是否包含模式,那就太好了,但我不知道这如何帮助我否定其他所有内容。@user2140261:您可以。。。不用剩下的?由于这只符合您的要求,您只需访问匹配项并。。无论您需要它做什么,都可以使用它。@user2140261:查看我的更新答案。您只需要从返回的
Match
对象中获取值。哇!我不知道RegEx.Match甚至返回了一个值或Success元素。很高兴知道。它还返回索引、组、捕获和长度。非常感谢。文档是一件很棒的事情。如果我想知道字符串是否包含模式,那就太好了,但我不知道这如何帮助我否定其他所有内容。@user2140261:您可以。。。不用剩下的?由于这只符合您的要求,您只需访问匹配项并。。无论您需要它做什么,都可以使用它。@user2140261:查看我的更新答案。您只需要从返回的
Match
对象中获取值。哇!我不知道RegEx.Match甚至返回了一个值或Success元素。很高兴知道。它还返回索引、组、捕获和长度。非常感谢。文档是一件很棒的事情。