gpt4 book ai didi

c# - 正则表达式 C# - 如何匹配类的方法和属性名称

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:39 28 4
gpt4 key购买 nike

我想匹配方法名称(带参数)和属性名称。我不想在匹配中包含访问器。例如我得到了这种类:

public class test
{
public static string NA = "n/a";

public static DateTime DateParser(string dateToBeParsed)
{
DateTime returnValue = new DateTime();
DateTime.TryParse(dateToBeParsed, GetCulture(), System.Globalization.DateTimeStyles.AssumeLocal , out returnValue);
return returnValue;
}
}

对于类名,我正在使用这种正则表达式:(?<=class\s)[^\s]+ 对于我正在尝试这样的方法:[^\s]+(?=() 但这将选择所有具有 ( 的文本。对于方法,我需要选择具有 ( 和访问器的行像 public、private 和 protected。如果不在最终匹配中包含这个怎么办?我只需要括号内的方法名称和参数。

最佳答案

编辑:使用此Regex

(?:public\s|private\s|protected\s)?[\s\w]*\s+(?<methodName>\w+)\s*\(\s*(?:(ref\s|/in\s|out\s)?\s*(?<parameterType>\w+)\s+(?<parameter>\w+)\s*,?\s*)+\)

并获取名为 methodNameparameterTypeparameter 的组。

你的代码可以是这样的:

var inputString0 = "public void test(string name, out int value)\r\nvoid test(string name, int value)";
foreach (Match match in Regex.Matches(inputString0, @"(?:public\s|private\s|protected\s)?[\s\w]*\s+(?<methodName>\w+)\s*\(\s*(?:(ref\s|/in\s|out\s)?\s*(?<parameterType>[\w\?\[\]]+)\s+(?<parameter>\w+)\s*,?\s*)+\)"))
{
var methodName = match.Groups["methodName"].Value;
var typeParameterPair = new Dictionary<string, string>();
int i = 0;
foreach (var capture in match.Groups["parameterType"].Captures)
{
typeParameterPair.Add(match.Groups["parameterType"].Captures[i].Value, match.Groups["parameter"].Captures[i].Value);
i++;
}
}

关于c# - 正则表达式 C# - 如何匹配类的方法和属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11643801/

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