[英]Regex Replace in the string with same value in multiple words
我想用引號替換字符串。
Mystring
如下所示:
var query = "SELECT abc.name,abc.owner-name FROM XXX";
我想按如下方式替換字符串。 預期結果
SELECT abc."name",abc."owner-name" FROM XXX
我正在使用正則表達式代碼如下:
Regex.Replace(query, $@"\b{column.ColumnName}\b", "\"" + column.ColumnName + "\"")
在取代以下字符串時獲得結果 -
SELECT abc."name",abc."owner-"name"
名稱是單獨的字符串,owner-name是單獨的字符串。 在嘗試替換名稱字符串時,另一個字符串會自動替換,因為第二個字符串中包含單詞name。
如果有任何解決方案,請告訴我。 提前致謝。
你需要確保較長的一個先來。 您可以創建列名列表,按降序排序,並構建一個替換組以形成正則表達式
\b(?:owner-name|owner|name)\b
看看這個正則表達式如何工作 。 請注意,從左到右檢查備選方案,一旦匹配,將跳過下一個備選方案。
這是一個以動態方式處理項目的片段(請參閱在線C#演示 ):
var ColumnNames = new List<string> { "owner", "name", "owner-name"};
ColumnNames = ColumnNames.OrderByDescending(x => x.Length).ToList();
var s = "SELECT abc.name,abc.owner-name FROM XXX";
var pattern = $@"\b(?:{string.Join("|", ColumnNames)})\b";
var result = Regex.Replace(s, pattern, "\"$&\"");
Console.WriteLine(result);
// => SELECT abc."name",abc."owner-name" FROM XXX
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.