簡體   English   中英

用逗號拆分正則表達式匹配的字符串?

[英]Split a regex matched string with commas?

我有一個正則表達式模式,它會改變被匹配的字符串..

var output = Regex.Replace(entity.NamingPattern, @"\[(?<token>.+?)\]|(?<word>[^\[\]])", (match) =>
                    {
                        var wordMatch = match.Groups["word"];
                        if (wordMatch.Success) return $"'{wordMatch.Value}'";
                        return "new."+match.Groups["token"].Value;
                    });

但也可以確保所有匹配的單詞和標記都用逗號分隔?

所以像這樣

(something[tester]somethi[worker]some[i]sadas,

像這樣返回

'(','s','o','m','e','t','h','i','n','g','new.tester','s','o','m','e','t','h','i','new.worker','s','o','m','e','new.i','s','a','d','a','s',','

單詞匹配每個字符和標記匹配每個方括號的內容,並刪除括號。 但我如何加入我不確定?

您可以在單詞組之后添加逗號,並為標記組添加周圍的單引號和逗號。

在最終結果中,使用TrimEnd修剪output末尾的逗號

非貪心點.*? 在模式中也可以是一個否定字符 class [^[\]]*

圖案

\[(?<token>[^[\]]*)\]|(?<word>[^[\]])

.Net 正則表達式演示

示例代碼

var s  = "(something[tester]somethi[worker]some[i]sadas,";
var output = Regex.Replace(s, @"\[(?<token>[^[\]]*)\]|(?<word>[^[\]])", (match) =>
{
    var wordMatch = match.Groups["word"];
    if (wordMatch.Success) return $"'{wordMatch.Value}',";
    return "'new."+match.Groups["token"].Value+"',";
});
Console.WriteLine(output.TrimEnd(','));

Output

'(','s','o','m','e','t','h','i','n','g','new.tester','s','o','m','e','t','h','i','new.worker','s','o','m','e','new.i','s','a','d','a','s',','

暫無
暫無

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

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