我想編寫一個正則表達式表示,將尋求這種模式:asdf=123
,然後一旦事情是在文件/字符串中發現,它應該只是更換123
部分bbbcccddd
。正則表達式的模式僅查找和替換部分
我該如何在C#中做到這一點?
我想編寫一個正則表達式表示,將尋求這種模式:asdf=123
,然後一旦事情是在文件/字符串中發現,它應該只是更換123
部分bbbcccddd
。正則表達式的模式僅查找和替換部分
我該如何在C#中做到這一點?
Console.WriteLine(Regex.Replace("11asdf=123 ttt", @"(?<=asdf=)123", "321"));
雖然我寫這篇文章的代碼,但我認爲會有很多問題,因爲你沒有描述你的問題顯然,如果在asdf
之前有一些字符不是白色,或者123
之後有一些號碼,你是否還想替換123
?
你可以做一些事情,像這樣:
string pattern = "asdf=123";
Regex r = new Regex(@"(.*?=)(.*)");
Match m = r.Match(pattern);
if(m.Success)
Console.WriteLine(m.Groups[1].Value + new String(m.Groups[2].Value.Reverse().ToArray()));
,直到它找到一個組中的equals((.*?=)
),並把它上面將匹配任何東西。然後它將匹配後面的內容並將其放在另一個組中((.*)
)。第一組然後按原樣打印,而第二組的內容顛倒。
這樣做的一個更簡潔但不夠靈活的方式是使用Regex.Replace
,用類似這樣:
string pattern = "asdf=123";
Console.WriteLine(Regex.Replace(pattern, @"(.*?=)(\d)(\d)(\d)", "$1$4$3$2"));
這是不太可靠的,雖然,因爲你需要知道的數字前手的量。
編輯:按照您的編輯:
您將需要使用:Regex.Replace("asdf=123", "(.*?=)\d{3}","$1bbbcccddd")
我不需要反向..任何字符串都可以在那裏 –
@devhedgehog:我已經更新了我的答案。即使您的編輯完全改變了您的問題。 – npinti
'。*?'部分讓我害怕大量的任意字串。 '(\ S * =)'可能會更好。 –
string pattern = @"asdf=123";
var result = Regex.Replace(yourString, pattern, "asdf=bbbcccddd");
對於這種方法正則表達式是矯枉過正,只是string.Replace就足夠了https://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx –
可能這個鏈接有幫助嗎? :https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx –
請詳細說明。你的字符串/文件中的「asdf = 123」之後/之後是什麼?如果它像「asdasd____ asdf = 123 _____ asdasd」那樣是一回事,但是如果它是「zzzzzzasdf = 12309656097」 - 是不同的。如果你提供這個字符串的縮短例子,那會很好。價值觀是固定的?或者這只是你正在尋找的模式的一個例子? – Fabjan