正则表达式 匹配问题

jordan51341 2008-11-14 09:50:19
各位大侠们帮我看看 这样的正则表达式怎么写
我要匹配一个函数调用字符串
格式是: myfunction(100,200,300) 我需要从一个文本中找到所有的myfunction()函数调用 函数的参数是随意
要把所有的调用这个函数字符提取出来保存到list中
我写的格式如下:
MatchCollection mc = Regex.Matches(str,"??");
for (int j = 0; j < mc.Count; j++)
{
list.Add(mc[j].Value);
}
请各位帮忙解决 谢谢~~
补充一个:提取出来的字符不包括函数名myfunction()
只是提取里面的参数出来
...全文
69 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
止戈而立 2008-11-14
  • 打赏
  • 举报
回复
(?<=myfunction\()[^()]*(\([^()]+?\)[^()]*)*[^)]+?(?=\))

把myfunction((int)number,(double)d)这种形式考虑进去。。如果不需要嵌套的话,就只要1楼那样就可以了。。如果还有更复杂的,那就得重新写过。


MatchCollection mc = Regex.Matches(str,@"(?<=myfunction\()[^()]*(\([^()]+?\)[^()]*)*[^)]+?(?=\))");
foreach (Match m in mc)
{
list.Add(m.Value);
}
jordan51341 2008-11-14
  • 打赏
  • 举报
回复
(? <=myfunction[(])[^)]+?(?=[)]) 正解

谢谢大家
止戈而立 2008-11-14
  • 打赏
  • 举报
回复
哦。不好意思。没看清楚。。。1楼是正解。。

(?<=myfunction[(])[^)]+?(?=[)]) 
cancerser 2008-11-14
  • 打赏
  • 举报
回复
(?<=myfunction[(])[^)]+?(?=[)])
多了个空格..
止戈而立 2008-11-14
  • 打赏
  • 举报
回复
MatchCollection mc = Regex.Matches(str,@"myfunction\([^)]*\)"); 
cancerser 2008-11-14
  • 打赏
  • 举报
回复
(?<=myfunction[(])[^)]+?(?=[)])

自己试下

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧