簡體   English   中英

正則表達式模式可過濾掉所有不匹配的內容

[英]Regex Pattern for filter out anything that doesn't Match

使用Regex.Replace(mystring, @"[^MV:0-9]", "")將除去未任何信件MV: ,或(也可以使用\\ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM