簡體   English   中英

無法構建正確的正則表達式

[英]Trouble constructing correct regular expression

試圖構建一個正則表達式來匹配下面列表的每一行。

6220    1   10  Because he's the hero Gotham deserves,
6220    9   10   
5181    5   7   in time, like tears in rain. Time to die.
6220    3   10  So we'll hunt him.
6220    5   10  Because he's not a hero.
5181    6   7    
5181    2   7   shoulder of Orion. I watched C-beams
5181    4   7   Gate. All those moments will be lost
6220    6   10  He's a silent guardian.
5181    3   7   glitter in the dark near the Tannhäuser
6220    7   10  A watchful protector.
5181    1   7   believe. Attack ships on fire off the
6220    0   10  We have to chase him.
5181    0   7   I've seen things you people wouldn't
6220    4   10  Because he can take it.
6220    2   10  but not the one it needs right now.
6220    8   10  A Dark Knight.

一切都很好,直到一行有一個空白的“消息”,例如第 2 行和第 6 行。這是當前正則表達式的樣子。

var regex = new Regex(
    @"(?<id>\d+)\s+(?<index>\d+)\s+(?<count>\d+)\s+(?<message>.+)?");

foreach (Match match in regex.Matches(File.ReadAllText("samples.txt")))
{
    Console.WriteLine(match.Groups["message"].Value);
}

如果原始消息組為空,當前正則表達式會將自身下方的行設置為消息。 我已經嘗試了很多事情,以及使消息可選。 如何讓正則表達式將消息識別為空?

(?<id>\d+)\s+(?<index>\d+)\s+(?<count>\d+)\s(?<message>.+)?

使您的\\s+成為\\s這樣就可以匹配一些東西而不是吃掉它

暫無
暫無

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

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