我有一个数组,其中包含诸如COM1,COM22,COM3abc,COM4之类的字符串!“§”,COM5656!等等。现在,要替换第一个数字块后要替换所有字符,这样我得到:COM1,COM22,COM3,COM4,COM5656。我对正则表达式不太熟悉,但是我尝试了很多其他正则表达式,例如:
for (var i = 0; i < comPorts.Length; i++)
comPorts[i] = Regex.Replace(comPorts[i], @"\D*(\d+)\D*", "$1");
但是此正则表达式也删除了COM。
答案 0 :(得分:3)
您可以使用
Regex.Replace(comPorts[i], @"(\d+).*", "$1")
请参见regex demo
(\d+).*
正则表达式将匹配并捕获第一个(最左边的)一个或多个数字文本块,然后.*
将捕获其余的字符串,而$1
将替换整个字符串与捕获的数字匹配。请注意,如果字符串可以包含多行,则需要将RegexOptions.Singleline
作为Regex.Replace
的最后一个参数。