c#正则表达式匹配数组

本文关键字:数组 正则表达式 | 更新日期: 2023-09-27 18:18:08

所以这是我第一次实时使用c#,我使用正则表达式有一些麻烦。我有一个这样的字符串:

string str = "test=CAPTURE1; test2=CAPTURE2; ......."

我捕获=;之间的所有内容,因此:

var matches = Regex.Matches(str, "=([^;]*);/g");

但是,我不能从数组中得到结果:

string str2 = matches[0].Value;

我不确定我做错了什么。任何帮助都是感激的!

编辑:

所以这就是我想要实现的(使用@Jason Evans代码):

string connection = "Server=localhost;Database=dbTest;User Id=hello;Password=world;";            
var matches = Regex.Matches(connection, "(?<Key>[^=]*)=(?<Value>[^;]*)");
string server = matches[0].Groups["Data"].Value;
string db = matches[1].Groups["Data"].Value;
string un = matches[2].Groups["Data"].Value;
string pw = matches[3].Groups["Data"].Value;           
MsSqlConnectionParameters param = (MsSqlConnectionParameters)e.ConnectionParameters;
param.ServerName = server;
param.DatabaseName = db;
param.UserName = un;
param.Password = pw;

尽管我相信这是正确的,但由于某些原因,这仍然不能工作。

EDIT2:奇怪的是,这工作(使用相同的数据)…我难住了:

string[] test = { "localhost", "dbTest", "hello", "world" };
MsSqlConnectionParameters param = (MsSqlConnectionParameters)e.ConnectionParameters;
param.ServerName = test[0];
param.DatabaseName = test[1];
param.UserName = test[2];
param.Password = test[3];

c#正则表达式匹配数组

尝试如下:

namespace ConsoleApplication1
{
    using System.Text.RegularExpressions;
    public class Program
    {
        static void Main(string[] args)
        {
            string str = "test=CAPTURE1; test2=CAPTURE2";
            var matches = Regex.Matches(str, "(?<Key>[^=]*)=(?<Value>[^;]*)");
            string str2 = matches[0].Groups["Key"].Value;
            string str3 = matches[0].Groups["Value"].Value;
        }
    }
}

我使用命名捕获组(?<Key>)(?<Data>)来捕获'='之前和之后的文本。这样您就可以获取字符串的各个部分。