您能否擴充爲什麼Console.WriteLine(m.Groups[1]);
的輸出爲Contoso, Inc
? 你能否詳細說明這個例子的匹配步驟?謝謝。這個正則表達式如何提取公司名稱?
PS:我不熟悉的羣體
string input = "Company Name: Contoso, Inc.";
Match m = Regex.Match(input, @"Company Name: (.*$)");
Console.WriteLine(m.Groups[1]);
您能否擴充爲什麼Console.WriteLine(m.Groups[1]);
的輸出爲Contoso, Inc
? 你能否詳細說明這個例子的匹配步驟?謝謝。這個正則表達式如何提取公司名稱?
PS:我不熟悉的羣體
string input = "Company Name: Contoso, Inc.";
Match m = Regex.Match(input, @"Company Name: (.*$)");
Console.WriteLine(m.Groups[1]);
我不familar與組
的概念A組是正則表達式的一部分,而這樣做的匹配被保存。要在正則表達式中聲明一個組,可以在括號之間放置一部分表達式。然後這部分被保存在一個組中。
組從左到右,從外部到內部編號(儘管也可以給出明確的名稱)。 「零」組是整個比賽。
在你的情況下,你打印第一個組,這只是字符串的最後一部分,即在「Company Name:
」之後的所有內容,直到行尾。
該文檔包含所有有關組的信息的概念,但我認爲,每次在模式中使用括號的時候,你創建一個匹配的組。組[0]是由模式匹配的文本,組[i](其中i> 0)表示括號中的第n個匹配模式。 你也可以命名組。
組由一組括號表示。基本上你的正則表達式是說:爲了匹配,任何傳入的字符串必須以Company Name:
開頭,並且字符串的其餘部分可以是任何字符,即.*
,包括字符串的末尾$
。由於.*$
位於括號內,因此您表示想要對該匹配進行分組。請記住,你可以有更多的團體。整個輸入字符串總是Groups[0]
(如果它匹配的話),這就是爲什麼你的表達式(.*$)
在Groups[1]
。
我正在學習正則表達式,現在,所以這是我的一些好的做法:)
您使用正則表達式是「公司名稱:(。* $)」並使用RegExOptions .SingleLine匹配你的字符串(這是默認選項)。
「公司名稱:」會從任何地方在字符串中開始(如果你要使用「^公司名稱:」匹配你會說,「公司名稱:」必須是。字符串的第一部分(^ =字符串的beginnig)
(.*$)
這是一個未命名的基團
這裏面組你正在匹配爲".*$"
,即轉化爲:任何字符"."
,採取0以上次"*"
,直到字符串結尾"$"
清除?:)
'(?。* $)'是一個無效的表達式。 –
你說得對 - 我刪除了關於(?。* $)的評論 – Ando
如果您有興趣學習正則表達式的來龍去脈(以及不同的實現根據語言和平臺而有所不同),那麼我絕對推薦Mastering Regular Expressions from O'Reilly。
你能詳細說明這個例子的匹配步驟嗎?謝謝。 – Ricky
我們看到「公司名稱」,然後我們將所有其他符號捕獲到組號1中,因爲「。* $」匹配所有其他符號。 – wRAR