[英]Regex Pattern for filter out anything that doesn't Match
使用Regex.Replace(mystring, @"[^MV:0-9]", "")
将除去未任何信件M
, V
, :
,或(也可以使用\\ d)0-9的问题是我想删除不是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]
}
如果我选择了Latter选项,那么将没有:
string[] strarNumbersAfterMV = Regex.Split(strarMyString[1], @"[^\d]");
在第一次更改数字时只拆分一个吗? (它将始终以MV:
之后的数字开头MV:
你不能只是做:
string matchedText = null;
var match = Regex.Match(myString, @"MV:[0-9]+");
if (match.Success)
{
matchedText = Value;
}
Console.WriteLine((matchedText == null) ? "Not found" : matchedText);
那应该给您确切您需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.