gpt4 book ai didi

c# - 正则表达式 - 用于从字符串中提取数据的各种正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:21 25 4
gpt4 key购买 nike

我有以下代码

string s = "add(2,3);";
var matchess = Regex.Matches(s, @"\(\s*(?<num>\d+)\s*(\,\s*(?<num>\d+)\s*)*\)");
var results = matchess.Cast<Match>()
.SelectMany(m => m.Groups["num"].Captures.Cast<Capture>())
.Select(c => c.Value).ToArray();

上面的代码检测到 functionname(number,number) 的 2 个以上输入并将结果存储在数组列表中以便能够访问。

有没有办法改变方程式,使其也接受以下内容并相应地打印结果?

示例 1

 string s = "add(2.2,3.3);";

结果 1

results[0] = 2.2
results[1] = 3.3

示例 2

string s = "add(2.4,3.5,6.7);";

结果 2

    results[0] = 2.4
results[1] = 3.5
results[2] = 6.7

示例 3

string s = "test("this is a test","just an example");";

结果 3

results[0] = "this is a test"
results[1] = "just an example"

示例 4

 string s = "test("this is a test","just an example","testing");";

结果 4

    results[0] = "this is a test"
results[1] = "just an example"
results[2] = "testing"

基本上我需要的是获取函数名(十进制,十进制)和函数名(字符串,字符串)的 2 个以上输入并将结果存储在数组列表中以访问它们。

请指教。谢谢

最佳答案

试试这个:

string s = "aa(1.2,3.5)";
//Or
string s = "aa(sad,asd)";
var info = Regex.Split(
Regex.Matches(s, @"\(.*?\)")
.Cast<Match>().First().ToString()
.Replace("(", string.Empty).
Replace(")", string.Empty), @"[\s,]+");

工作原理:

首先我在 () 区域获取字符串:

Regex.Matches(s, @"\(.*?\)");

获取第一场比赛

.Cast<Match>().First().ToString()

删除()

.Replace("(", string.Empty).Replace(")", string.Empty)

,之间拆分文本或数字形成结果

Regex.Split(result, @"[\s,]+");

关于c# - 正则表达式 - 用于从字符串中提取数据的各种正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com