簡體   English   中英

在 .NET 中使用正則表達式從字符串中提取標記

[英]Extracting tokens from a string with regular expressions in .NET

我很好奇這是否可以使用正則表達式。 我想從類似於以下的字符串中提取標記:

Select a [COLOR] and a [SIZE].

好的,很簡單 - 我可以使用(\[[AZ]+\])

但是,我還想提取標記之間的文本。 基本上,我希望上述匹配組為:

"Select a "
"[COLOR]"
" and a "
"[SIZE]"
"."

最好的方法是什么? 如果有辦法用 RegEx 做到這一點,那就太好了。 否則,我猜我必須提取標記,然后手動循環 MatchCollection 並根據每個匹配的索引和長度解析出子字符串。 請注意,我需要保留字符串和標記的順序。 有沒有更好的算法來做這種字符串解析?

使用Regex.Split(s, @"(\[[AZ]+\])") - 它應該為您提供所需的確切數組。 Split 獲取捕獲的組並將它們轉換為結果數組中的標記。

這是一種不使用正則表達式 ( Regex ) 的方法,它使用String.Split ,但您會丟失分隔符。

        string s = "Select a [COLOR] and a [SIZE].";

        string[] sParts = s.Split('[', ']');

        foreach (string sPart in sParts)
        {
            Debug.WriteLine(sPart);
        }

        // Select a 
        // COLOR
        //  and a 
        // SIZE
        // .

暫無
暫無

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

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