常规Exression在多个不同的分隔符中提取字符串

时间:2017-10-13 12:01:21

标签: c# regex

我试图在c#app中的多个分隔符之间提取字符串。示例如下:

#K06[1234567-0257;S2W546#20-H2]

必需的输出:

0257S2W54620

我需要提取第一个-;之间的内容,在;#之间添加内容,最后附加#与最终-之间的字符串。

我希望使用正则表达式来实现这一点,因为字符串将来可能会发生变化。

我努力在一个RegEx中附加3个子串。

2 个答案:

答案 0 :(得分:2)

如果您的输入不会改变并且您不愿意使用正则表达式,则可以使用此单行程序:

var y = x.Split('-')[1].Replace(";", "").Replace("#", "");

Try it online

  • 我们使用Split()修剪代码前后。
  • 我们使用Replace()来消除噪音。

fullcode:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var x = "#K06[1234567-0257;S2W546#20-H2]"; 

        var y = x.Split('-')[1].Replace(";", "").Replace("#", "");
        Console.WriteLine(y == "0257S2W54620");
        Console.WriteLine(y);
    }
}

答案 1 :(得分:2)

能够做你想做的正则表达式是:

-([^;]+);([^#]+)#([^-]+)

然后,您可以连接组1,2和3。

regex101

播放