C# 用于在多个不同定界符中提取字符串的正则表达式

C# 用于在多个不同定界符中提取字符串的正则表达式,c#,regex,C#,Regex,我试图在c#应用程序中提取多个分隔符之间的字符串。示例如下: #K06[1234567-0257;S2W546#20-H2] 所需输出: 0257S2W54620 我需要提取第一个-和之间的内容,追加之间的内容和,最后在和最后的-之间添加字符串 我希望使用正则表达式实现这一点,因为字符串将来可能会更改 我很难在一个正则表达式中附加3个子字符串 如果您的输入不会改变,并且您不愿意使用正则表达式,您可以使用以下一行: var y = x.Split('-')[1].Replace(";", ""

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

#K06[1234567-0257;S2W546#20-H2]
所需输出:

0257S2W54620
我需要提取第一个
-
之间的内容,追加
之间的内容
,最后在
和最后的
-
之间添加字符串

我希望使用正则表达式实现这一点,因为字符串将来可能会更改


我很难在一个正则表达式中附加3个子字符串

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

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

  • 我们使用
    Split()
    在前后修剪代码
  • 我们使用
    Replace()
    来消除噪声
完整代码:

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和3


上玩吧,谢谢你的回答。很好!即使是一个简单的
-(*);(.*)#(.*)-
本可以对这样的简单字符串执行此操作。你应该读一读关于regex的书,网上有很多ReSource。甚至像这样的网站也能让你们在几步之内理解基本的正则表达式。