替换第一个数字块之后的所有字符

时间:2019-02-07 21:03:04

标签: c# regex serial-port

我有一个数组,其中包含诸如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。

1 个答案:

答案 0 :(得分:3)

您可以使用

Regex.Replace(comPorts[i], @"(\d+).*", "$1")

请参见regex demo

(\d+).*正则表达式将匹配并捕获第一个(最左边的)一个或多个数字文本块,然后.*将捕获其余的字符串,而$1将替换整个字符串与捕获的数字匹配。请注意,如果字符串可以包含多行,则需要将RegexOptions.Singleline作为Regex.Replace的最后一个参数。