如何通过.Net正则表达式替换非重复字符

时间:2009-10-19 23:35:54

标签: .net regex

我有一个字符串。我想用“dd”替换“d”,使用Regex.Replace,但前提是d不重复。

例如,如果字符串是“m / d / yy”,我想将其更改为“m / dd / yy”。但是,如果字符串是“m / dd / yy”,我想保持相同,而不是将其更改为“m / dddd / yy”。

我该怎么做?我尝试过Reg.Replace(datePattern,“\ bd \ b”,“dd”),但这似乎不起作用。

5 个答案:

答案 0 :(得分:1)

(.)(?<!\1.)(?!\1)

字面意思是“字符,不在其前面,也不在其后面”。

答案 1 :(得分:1)

您可以使用lookahead and lookbehind检查每个d是否先于其他Regex.Replace(datePattern, "(?<!d)d(?!d)", "dd")

datePattern.Replace("/d/", "/dd/")

对于您问题中的特定示例,普通字符串替换比使用正则表达式更简单:{{1}}。我猜你的实际要求更复杂,因此是正则表达式。

答案 2 :(得分:0)

我认为你是对的;虽然你可能错误地逃过了字符。尝试:

Regex.Replace(datePattern, "\\bd\\b", "dd")

答案 3 :(得分:0)

我认为这对你想要做的事情有用:

Reg.Replace(datePattern, "/d/", "/dd/")

答案 4 :(得分:0)

更简单的方法是这样的:

Regex regex = new Regex(@"/(d|ddd)/");
string replacement = "/$1d/";
string updated = regex.Replace("m/d/yy", replacement);
string updated2 = regex.Replace("m/ddd/yy", replacement);
string notUpdated = regex.Replace("m/dd/yy", replacement);
string notUpdated2 = regex.Replace("m/dddd/yy", replacement);