当前位置: 首页 > 编程语言 > C#

正则表达式解析函数及参数分享

时间:2023-04-11 03:27:24 C#

正则表达式解析函数及参数我有如下字符串:function(param1,param2,param3,param4,...,paramN)我需要一个正则表达式代码来解析它作为一个字符串数组:函数param1param2param3param4。..paramN我在网上尝试了几个例子,但似乎没有一个对我有用。[编辑]没有考虑这个建议。检查上面的代码:usingSystem;使用System.Collections.Generic;使用System.Linq;使用系统文本;使用System.Threading.Tasks;使用System.Text.RegularExpressions;namespaceTestRegex{classProgram{staticvoidMain(string[]args){stringExpression=String.Empty;while(Expression.Trim()!="EXIT"){Expression=Console.ReadLine();//////获取函数名称///varfuncTags=Regex.匹配(表达式,@"b[^()]+((.*))$");Console.WriteLine("匹配:"+funcTags.Count);foreach(variteminfuncTags)Console.WriteLine("FuncTag:"+item);//////获取参数///varparamTags=Regex.Matches(Expression,@"b[^()]+((.*))$");Console.WriteLine("匹配:"+paramTags.Count);foreach(variteminparamTags)Console.WriteLine("ParamTag:"+item);}}}}输出:函数(??“a”、“b”、“c”);匹配:0匹配:0这里出了点问题...感谢您的帮助。根据您的函数的复杂程度,这实际上可能非常棘手。在这里查看我的类似答案。要点是将正则表达式分解为两个问题。先获取函数名,再获取参数。总之,这会提取函数名称:b[^()]+((.*))$对于参数,它处理参数以及参数中的函数:([^,]+(.+?))|([^,]+)这将处理嵌套函数:(?:[^,()]+((?:((?>[^()]+|((?)|)(?))*(?(open)(?!)))))*)+但如果您需要支持完整的C#语法,这很快就会变得棘手,例如参数中的评论等。请参阅此处进行讨论。根据评论更新抱歉,我遗漏了一些复制错误(现已更正)。您错过了函数正则表达式中的第一个。您还使用相同的模式来提取参数,而您需要如上所述的第二个正则表达式。此外,由于每行只有一个函数,因此您可以进行一次匹配。此代码将起作用:staticvoidMain(string[]args){stringExpression="function(param1,param2)";//////获取函数名///varfunc=Regex.Match(Expression,@"b[^()]+((.*))$");Console.WriteLine("FuncTag:"+func.Value);字符串innerArgs=func.Groups[1].Value;//////获取参数///varparamTags=Regex.Matches(innerArgs,@"([^,]+(.+?))|([^,]+)");Console.WriteLine("匹配:"+paramTags.Count);foreach(variteminparamTags)Console.WriteLine("ParamTag:"+item);}输出:以上就是C#学习教程的全部内容:正则表达式解析函数及参数分享,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注—FuncTag:function(param1,param2)Matches:2ParamTag:param1ParamTag:param2本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: