【问题标题】:Regex Pattern for filter out anything that doesn't Match用于过滤掉任何不匹配的正则表达式模式
【发布时间】:2013-06-14 13:57:58
【问题描述】:

使用Regex.Replace(mystring, @"[^MV:0-9]", "") 将删除任何不是MV: 或0-9 的字母(也可以使用\d)问题是我想删除任何不是@ 987654325@ 然后是数字。

我需要用任何东西替换任何不是这种模式的东西:

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: 后面的数字开头)

【问题讨论】:

    标签: c# .net regex regex-negation


    【解决方案1】:

    你不能这样做:

    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 甚至返回了 Value 或 Success 元素。很高兴知道。它还返回索引、组、捕获、长度。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2012-11-12
    相关资源
    最近更新 更多