急,请大家帮忙修改一个正则表达式

weifei_tlp 2014-09-17 04:09:03
正则表达式:Match match = Regex.Match(formula, @"(?<!"")([\w()()']+?)!([a-z]+\d+)(?!"")", RegexOptions.IgnoreCase);
要匹配的字符串可能有如下三种格式:
字符串1:IF(钢筋试验任务委托单!C15="","/",钢筋试验任务委托单!C15)
字符串2:IF('钢筋试验记录(梁场)'!G40="","/",'钢筋试验记录(梁场)'!G40)
字符串3:IF('钢筋试验记录(梁场)'!G40="","/",'钢筋试验记录(梁场)'!G40)

现在
字符串1要匹配:钢筋试验任务委托单!C15
字符串2要匹配:钢筋试验记录(梁场)!G40
字符串3要匹配:钢筋试验记录(梁场)!G40

这个正则表达式要怎么写?
...全文
261 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weifei_tlp 2014-09-18
  • 打赏
  • 举报
回复
自己帮顶一个
weifei_tlp 2014-09-17
  • 打赏
  • 举报
回复
表单名可能包含汉字,数字,字符,半/全角() 表单名可能外面有单引号,如:'钢筋试验记录(梁场)' 也可能没有,如: 钢筋试验记录(梁场)
weifei_tlp 2014-09-17
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
你知道什么是格式,什么是值吗? 正则匹配,只是匹配字符串,根本不分key和value 你不说清楚所谓的"值"都有哪些格式,匹配个球啊 好比你上面举例,连D26都出来了,这个跟你说的只有3种严重不符啊
呃,可能是没说清楚 就是匹配出类似:钢筋试验任务委托单!C15 这个的东西 前面 钢筋试验任务委托单 可以理解成是excel的表单名,后面C15可以理解成表单里的单元格 表单名可能包含汉字,数字,字符,半角()
於黾 2014-09-17
  • 打赏
  • 举报
回复
你知道什么是格式,什么是值吗? 正则匹配,只是匹配字符串,根本不分key和value 你不说清楚所谓的"值"都有哪些格式,匹配个球啊 好比你上面举例,连D26都出来了,这个跟你说的只有3种严重不符啊
weifei_tlp 2014-09-17
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
(?is)(?<=IF\()[^\=]+(?=\=)
这个基本能匹配上,就是有几个小问题 1、单引号没有过滤掉 2、不能使用IF来做为判断条件,IF在这可以理解成一个函数名,也可能有其它的函数名 如:IF(OR(试验任务委托单!G12="",试验任务委托单!G12="/"),"/",试验任务委托单!G12) 这个的匹配结果是:OR(试验任务委托单!G12 要的结果应该 是 试验任务委托单!G12 还有:IF(OR(D26="/",D26=""),"",IF(OR(F26="",F26="/"),"",IF(VALUE(REPLACE(D26,1,1,""))>VALUE(F26),"第一根屈服点,"&D26&","&F26,""))) 这个的匹配结果是:OR(D26 和 OR(F26 要的结果应该是匹配不上
bdmh 2014-09-17
  • 打赏
  • 举报
回复
(?is)(?<=IF\()[^\=]+(?=\=)
weifei_tlp 2014-09-17
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
如果只有3种格式,你直接判断字符串.Contains(子字符串)不好吗
格式只有3种,但值不只有三种呀
於黾 2014-09-17
  • 打赏
  • 举报
回复
如果只有3种格式,你直接判断字符串.Contains(子字符串)不好吗

110,502

社区成员

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

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

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