这样的正则怎么写 高分求助

flyso 2014-05-16 04:01:25
在一个HTML中大量的
<!--start_customized_code_1-->
....AAA
<!--end_customized_code_1-->

....

<!--start_customized_code_2-->
....BBB
<!--end_customized_code_2-->

....

1.
这样的代码,怎么用正则
把 <!--start_customized_code_开头 中间是(数字) -->结尾 和 <!--end_customized_code_开头 中间(数字) -->结尾
中间的内容取出来,放到一个集合中

这个start_customized_code_的个数是不固定的,要扫描整个HTML,然后
把每个符合条件的逐一放到集合中。。。 (每个符合的条件项目需要存两个值,一个是key,如customized_code_1,一个是获
start和end中间的值

这需要一个强大的正则来实现。。

举例,最终实现集中的值如下:
KEY Value
customized_code_1 ....AAA
customized_code_2 ....BBB




2.之后再怎么用这个集中合的值对另一个HTML进行替换

比如别的页面也有
...
<!--start_customized_code_2-->
<!--end_customized_code_2-->
...

怎么用刚才集合中存储的值对 上面的内容进行替换, 比如刚才集合中的customized_code_2对应的值是....BBB
最终结果就是
<!--start_customized_code_2-->
....BBB
<!--end_customized_code_2-->

用正则怎么实现


...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyso 2014-05-16
  • 打赏
  • 举报
回复
引用 9 楼 ailiku1988 的回复:
(?is)<!--(.*?)-->(.*?)<!--end_customized_code_\d+--> 遍历匹配结果,每次遍历组1是key,组2是value
这个已经差不多获取到了,就是多了一个不应该的key和value <!--------------------------------------------->...<!----------------------------------------------> 这样的形式 的形式也获取到了啊
kiss筱魔 2014-05-16
  • 打赏
  • 举报
回复
(?is)<!--(.*?)-->(.*?)<!--end_customized_code_\d+--> 遍历匹配结果,每次遍历组1是key,组2是value
tcmakebest 2014-05-16
  • 打赏
  • 举报
回复
如果都是1,2,3这么顺序的,其实就不用正则这么强大的工具了,直接用 indexof 就解决了
flyso 2014-05-16
  • 打赏
  • 举报
回复
引用 4 楼 mh_ma 的回复:
不知道说的对不对,这个是成对出现的,所以先获得数字那部分,之后在获得aaa那部分 数字:(?is)(?<=<!--start_customized_code_)\d+ 字母:(?is)(?<=<!--start_customized_code_[0-9]+-->).*(?=<!--end_customized_code)
现在改造后,能工作,但是有2个问题
object list = Regex.Matches(Str, "(?is)(?<=<!--start_customized_code_[0-9]+-->).*(?=<!--end_customized_code)").OfType<Match>().Select(t => new {
num = t.Groups(0).Value,
value = t.Groups(1).Value
}).ToList();
foreach (object obj in list) {
Response.Write("num:" + obj.num + " value:" + obj.value + "<br />");
}
一是:你的两个正则怎么合成一个,同时得到key和value 二是: <!--------------------------------------------->...<!----------------------------------------------> 这样的形式,怎么也取到的了值,我只需要按我那个规范取得值就行了,上面那种形式不应该获取得到值啊,并且现在获取的值也有问题,输出后看到好像全在第一个num中了,集合中应该有几个key和值,还不是一个,估计后面的正则写的有问题,用第一个获取数字的正则,倒是没问题,输出的是对的,但是现在需要2个合成一成,而且需要一一对应正确的关系
flyso 2014-05-16
  • 打赏
  • 举报
回复
引用 4 楼 mh_ma 的回复:
不知道说的对不对,这个是成对出现的,所以先获得数字那部分,之后在获得aaa那部分 数字:(?is)(?<=<!--start_customized_code_)\d+ 字母:(?is)(?<=<!--start_customized_code_[0-9]+-->).*(?=<!--end_customized_code)
我改造成下面这样,能输出一些值,但有问题 object list = Regex.Matches(Str, "(?is)(?<=<!--start_customized_code_[0-9]+-->).*(?=<!--end_customized_code)").OfType<Match>().Select(t => new { num = t.Groups(0).Value, value = t.Groups(1).Value }).ToList(); foreach (object obj in list) { Response.Write("num:" + obj.num + " value:" + obj.value + "<br />"); }
flyso 2014-05-16
  • 打赏
  • 举报
回复
引用 4 楼 mh_ma 的回复:
不知道说的对不对,这个是成对出现的,所以先获得数字那部分,之后在获得aaa那部分 数字:(?is)(?<=<!--start_customized_code_)\d+ 字母:(?is)(?<=<!--start_customized_code_[0-9]+-->).*(?=<!--end_customized_code)
用类似如下的写法(只是举例,下面的语句只参考型式,内容并不相同),该怎么写啊 var list = Regex.Matches(str1, @"(?is)ST_+(?=[^>]*?pid\-(?<pid>[^&_]+))(?=[^>]*?sid\-(?<sid>[^&_]+))(?=[^>]*?innername\-(?<innername>[^&]+))(?=[^>]*?format\-(?<format>[^&_]+)).*?_+ST") .OfType<Match>().Select(t => new { all = t.Groups[0].Value, pid = t.Groups["pid"].Value, sid = t.Groups["sid"].Value, innername = t.Groups["innername"].Value.Replace("___ST", ""), format = t.Groups["format"].Value }).ToList(); foreach (var obj in list) { Response.Write("pid:" + obj.pid + " sid:" + obj.sid + " innername:" + obj.innername + " format:" + obj.format + " all:" + obj.all + "<br />"); }
王子文龙 2014-05-16
  • 打赏
  • 举报
回复
不知道说的对不对,这个是成对出现的,所以先获得数字那部分,之后在获得aaa那部分 数字:(?is)(?<=<!--start_customized_code_)\d+ 字母:(?is)(?<=<!--start_customized_code_[0-9]+-->).*(?=<!--end_customized_code)
flyso 2014-05-16
  • 打赏
  • 举报
回复
求高手指导啊,没法下班了呀
t101lian 2014-05-16
  • 打赏
  • 举报
回复
难度好大呀,,帮顶, 等大牛。
flyso 2014-05-16
  • 打赏
  • 举报
回复
没人知道吗。。。。。。。。

62,072

社区成员

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

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

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

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