200分求救 正则替换问题

在路上20130607 2011-11-28 02:32:37
(
(DS_NE_CELL_G.BTS_NAME)-(DS_PRD_A_CELL_H.FREECOUNT)
)
/
(
(DS_NE_CELL_G.BTS_NAME)+(DS_PRD_A_CELL_H.FREECOUNT)
) >2
替换成
(
(4)-(2)
)
/
(
(4)+(2)
)
>2
只要能替换就好,计算的话 有别的方法 麻烦高手看看了
...全文
128 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-11-28
  • 打赏
  • 举报
回复
如果你想要获取括号内的信息,正则是这样写的:
(?<=\()[^)]+(?=\))

然后根据取到的值去数据库或其他地方找到需要替换的值,进行替换即可:
string str="你的那一坨";
str=Regex.Replace(str,@"(?<=\()[^)]+(?=\))",m=>GetValue(m.Value));

public string GetValue(string str)
{
if(str=="DS_NE_CELL_G.BTS_NAME") return "4";
else if(str=="DS_PRD_A_CELL_H.FREECOUNT") return "2";
else return "Tim" ;
}
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
很想总结下 但是对正则真的 不懂

正在读 有需要的童鞋 可以看看
过客的正则博客
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
感谢 以上各位的回复 结贴
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 icedmilk 的回复:]

取集合的代码
C# code

[/Quote]

非常感谢 可以用了
Icedmilk 2011-11-28
  • 打赏
  • 举报
回复
取集合的代码

public static void Regex20111128()
{
string src =
@"(
(DS_NE_CELL_G.BTS_NAME)-(DS_PRD_A_CELL_H.FREECOUNT)
)
/
(
(DS_NE_CELL_G.BTS_NAME)+(DS_PRD_A_CELL_H.FREECOUNT)
) >2
";
var matches = Regex.Matches(src, @"(?<=\()[^()]+(?=\))");
List<string> collection = matches.Cast<Match>().Select(x => x.Value).ToList();
foreach (var str in collection)
{
Console.WriteLine(str);
}
}
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fangxinggood 的回复:]

我觉得和括号没啥关系啊。关键是把 key: DS_NE_CELL_G.BTS_NAME 换成 value: 2 不是吗?

这个key,是从哪来得? 比如 ClassName + "." + FieldName ?
[/Quote]
客户输入的,如果要获取到,就需要按照规则 取到“()”内的信息
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fangxinggood 的回复:]

我觉得和括号没啥关系啊。关键是把 key: DS_NE_CELL_G.BTS_NAME 换成 value: 2 不是吗?

这个key,是从哪来得? 比如 ClassName + "." + FieldName ?
[/Quote]
这个是客户输入的
机器人 2011-11-28
  • 打赏
  • 举报
回复
我觉得和括号没啥关系啊。关键是把 key: DS_NE_CELL_G.BTS_NAME 换成 value: 2 不是吗?

这个key,是从哪来得? 比如 ClassName + "." + FieldName ?
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ssp2009 的回复:]
去掉前后括号再用正则啊,如果只是替换replace完全可以吗
[/Quote]

不一定 这个括号 就出现在最前面 和 最后面
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ssp2009 的回复:]

引用 4 楼 luosaimingjavaandc 的回复:
C# code

Regex regex = new Regex(@"(?<=\()([^\)]+)(?=\))");
MatchCollection mm = regex.Matches(forContent);
如果forContent=(DS_NE_CELL_G.BTS_NAME)+(DS_PRD_A_CELL_H.F……
[/Quote]

谢谢您的回复 ,我想取到字符串里面的 类似DS_NE_CELL_G.BTS_NAME的东西,取到一个集合就行
快溜 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luosaimingjavaandc 的回复:]
C# code

Regex regex = new Regex(@"(?<=\()([^\)]+)(?=\))");
MatchCollection mm = regex.Matches(forContent);
如果forContent=(DS_NE_CELL_G.BTS_NAME)+(DS_PRD_A_CELL_H.FREECOUNT)>2
那么可以 取到集合信息
如果 f……
[/Quote]去掉前后括号再用正则啊,如果只是替换replace完全可以吗
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复

Regex regex = new Regex(@"(?<=\()([^\)]+)(?=\))");
MatchCollection mm = regex.Matches(forContent);
如果forContent=(DS_NE_CELL_G.BTS_NAME)+(DS_PRD_A_CELL_H.FREECOUNT)>2
那么可以 取到集合信息
如果 forContent=((DS_NE_CELL_G.BTS_NAME)+(DS_PRD_A_CELL_H.FREECOUNT))>2
取出来的集合 就有问题了
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 charles_y 的回复:]

直接字符串replace

s.Replace("DS_NE_CELL_G.BTS_NAME","4").Replace("DS_PRD_A_CELL_H.FREECOUNT","2");
[/Quote]
谢谢你的回复 但是需求不是这么简单,括号内的信息 是不固定的
需要取出来所有括号内的信息,和数据库库匹配后进行替换。
charles_y 2011-11-28
  • 打赏
  • 举报
回复
直接字符串replace

s.Replace("DS_NE_CELL_G.BTS_NAME","4").Replace("DS_PRD_A_CELL_H.FREECOUNT","2");
在路上20130607 2011-11-28
  • 打赏
  • 举报
回复
括号内的 信息 不固定 都需要换成数字

最好能把所有括号内的信息都取出来 返回一个集合

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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