[英]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.