簡體   English   中英

C# Regex.Replace 匹配相同數量的字符

[英]C# Regex.Replace match by the same amount of characters

我想知道如何將未知數量的等號的正則表達式匹配,即不少於 2 ... 替換為相同數量的下划線

到目前為止,我得到了這個:

text = Regex.Replace(text, "(={2,})", ""); 

我應該使用什么作為第三個參數?

編輯:最好是在所有語言中兼容的正則表達式解決方案

您可以改用Regex.Replace(String, MatchEvaluator)並分析數學:

string result = new Regex("(={2,})")
    .Replace(text, match => new string('_', match.ToString().Length)); 

一個不太清楚的答案(在代碼清晰度方面):

text = Regex.Replace(text, "=(?==)|(?<==)=", "_");

如果一行中有超過 2 個= ,那么在每個= ,我們都會在前面或后面找到一個=

這僅在語言支持后視(包括 C#、Java、Python、PCRE... 並且不包括 JavaScript)時才有效。

但是,由於您可以在 JavaScript 中將函數傳遞給String.replace函數,因此您可以編寫類似於 Alexei Levenkov 的答案的代碼。 實際上,Alexei Levenkov 的答案適用於多種語言(當然,Java 除外)。

暫無
暫無

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

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