簡體   English   中英

正則表達式,僅在當前字符串中存在時匹配

[英]Regex, match only if it exists in the current string

首先,對於可能發生的任何拼寫/語法錯誤,我們深表歉意。 我正試圖解決一些復雜的正則表達式問題,但我似乎不知道如何解決。 我正在嘗試過濾掉某些字符串的某些部分。 但是,這有效! 有一行是可選的,第二行是電子郵件。 我如何才能告訴正則表達式這部分是可選的,並且僅應搜索它是否存在於字符串中。

弦樂

  • [評論]喵[/127.0.0.1]
  • [評論]陰影[/127.0.0.1]
  • [評論] [電子郵件]狡猾[/127.0.0.1]
  • [評論] [email2] PerfectAim [/127.0.0.1]

我嘗試過的

Regex regexUserCommented = new Regex(
    @"(\[COMMENT\])\ " +  // COMMENT
    @"(\[.*\]) " +        // Email, this needs to be optional but how?!
    @"(\w(?<!\d)[\w'-]*)" // User
);

if (regexUserCommented.IsMatch(test))
{
    var infoMatches = regexUserCommented.Split(test);
    Console.WriteLine(infoMatches[3]); // User
}

任何人都知道如何將電子郵件部分設為可選? (在正則表達式中是可選的,因此,如果它不在字符串中,則不執行任何操作,只是跳過電子郵件部分,對不起我的英語>:抱歉)。

正在使用群組...

Regex regexUserCommented = new Regex(
    @"(\[COMMENT\])\ " +  // COMMENT
    @"((\[.*\]) )?" +        // Email, this needs to be optional but how?!
    @"(\w(?<!\d)[\w'-]*)" // User
);

var match = regexUserCommented.Match(test);

if (match.Groups.Count == 5)
{
    Console.WriteLine("==> {0}", match.Groups[4].Value);
}
else
{
    Console.WriteLine("==> Not matched");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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