查看: 1447|回复: 10
打印 上一主题 下一主题

[求助] 删除任意冗余数据的方法?已知字符范围

[复制链接]

该用户从未签到

23

主题

63

回帖

250

积分

童生

Rank: 2

积分
250
跳转到指定楼层
1
发表于 2014-9-11 08:37:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wubis 于 2014-9-11 09:18 编辑

问一下:

比如有一万个网页连接,分别是<br><div><a href="http://x.cn/z____.html">____</a></div></p>,下划线里面是26个字母和数字的任意组合,我是个完美主义的。如果想删除这些内容,有什么办法呢?
以前用正则表达式(npp的),我丢失过数据,比如
<div>vanl</div>saa<div>bsdb</div>
选择\<div\>.*\</div\>替换成空,有时候它会把上述全部删除,在同一行也是如此。

对于那一万个连接,我是先注释掉,:<br><div><a href="http://x.cn/z 替换成 <!--
.html"> 替换成 --><!--
注:这个中继连接个人认为是绝杀
</a></div></p> 替换成  -->
并假设这三组标签全部只在网页连接用过,先抽样检查
然后把<!--?  替换成<!--
?代指26字母和数字,这样一般2小时就可以把任意组合搞定,最后把<!---->替换成空就可以了

具体替换操作
1.为加快类似aaabbb的替换,把<!--a替换成<!--时重复替换,这样子变相加快速度

本帖被以下淘专辑推荐:

该用户从未签到

23

主题

63

回帖

250

积分

童生

Rank: 2

积分
250
2
 楼主| 发表于 2014-9-11 08:55:34 | 只看该作者
本帖最后由 wubis 于 2014-9-11 09:57 编辑

补充
1.很多大都会用css调成display:none,这一点挺好。我有点性能癖,觉得如果css里面一大串,会不会拖慢渲染速度
2.把mdx转出纯txt做全文搜索的,或者用mdict全文搜索的,会不会搜出被隐藏的内容
3.getdict能够不导出display:none的文本吗,如果这样,那就大大增强使用性了。如果有,麻烦yhssdl有空时研究以下,谢谢了。
4.以上3点未经考察,能力不够,手头又没有用css的mdx

该用户从未签到

2121

主题

2961

回帖

6万

积分

翰林院修撰

不忘初心。送分大人,灌水砖家。擅长抛砖引玉,挖坑不填。

Rank: 12Rank: 12Rank: 12

积分
61056

翰林院专用章灌水大神章笑傲江湖章小蜜蜂章管理组专用章

3
发表于 2014-9-11 08:55:45 | 只看该作者


自己写正则比较头疼。

可以用TextForever ( http://www.comicer.com/stronghorse/software/#TextForever ), 这个“文本提取”功能好用,我一直用这个来处理下载下来的N个网页文件(当然,事实上,可以在下载的时候顺便就处理了,不过为了防止误处理,我一般是把网页所有代码都给下了)。可删除“起始点和结束点之间的内容”,注意设置好起始点和终止点(以及其他设置),以免误删。


也可以试试Search and Replace (http://www.funduc.com/search_replace.htm )

该用户从未签到

7

主题

373

回帖

6805

积分

会元

Rank: 7Rank: 7Rank: 7

积分
6805

灌水大神章小蜜蜂章笑傲江湖章

4
发表于 2014-9-11 09:21:32 | 只看该作者
本帖最后由 itarcy 于 2014-9-11 09:26 编辑

嗯O大的那工具老好用了~

另外
<br>保留么,<br>是行首么
如果不保留<br>,<br>是行首,试试
  1. ^<br><div><a href="http://x.cn/z([a-z0-9]+).html">([a-z0-9]+)</a></div></p>
复制代码

保留<br>,试试
  1. <div><a href="http://x.cn/z([a-z0-9]+).html">([a-z0-9]+)</a></div></p>
复制代码


这个正则,在emeditor、akelpad、evereidt、UE(perl模式)里面应该管用,剩下不知

再,您这还有半边<p>去哪儿了 - -!

该用户从未签到

23

主题

63

回帖

250

积分

童生

Rank: 2

积分
250
5
 楼主| 发表于 2014-9-11 09:26:05 | 只看该作者
嗯,不过textforever能保证删的都是同一行,或者是同一个<div></div>里面的吗,不知道原理,因为真的被npp那次越过一个或多个</div>损坏数据吓坏了,而且这是个黑洞,你检查不出来。我之所以想出一个字符一个个删,就是怕它吃掉一些被</div>___________</div>夹住的数据

点评

试试就知道了。具体问题具体分析。  发表于 2014-9-11 09:35

该用户从未签到

23

主题

63

回帖

250

积分

童生

Rank: 2

积分
250
6
 楼主| 发表于 2014-9-11 09:43:03 | 只看该作者
本帖最后由 wubis 于 2014-9-11 09:45 编辑

谢谢itracy
不过,还有更狠的,比如
superman
<b>superman</b> <u>noun</u> /我是一大串音标/ <br>超人/超级人/超级牛人
</>
怎样把音标删除,难道把所有带/的标签都先变成没有/吗
纯属炒作,如有雷同,那是你问题

正则表达式有区分中文/英文,或者东亚文字、英文,或者英文/非英文吗

该用户从未签到

7

主题

373

回帖

6805

积分

会元

Rank: 7Rank: 7Rank: 7

积分
6805

灌水大神章小蜜蜂章笑傲江湖章

7
发表于 2014-9-11 10:11:55 | 只看该作者
本帖最后由 itarcy 于 2014-9-11 10:13 编辑

音标如果都是那个格式,而且其它地方没有类似格式的文字,
可以试试
  1. /([^<>/]*?)/
复制代码


英文就用两种\w或者[a-zA-Z],
比如纯英文的部分(\w+)或者([a-zA-Z]+)

中文就有些麻烦了,据说是每个字符都有Unicode范围的,您可以去百度一下
可问题是不一样的文本编辑器支持的不太一样,我自己试过的话,([一-龥]+)一般都管用
不过遇到中文里面夹杂了中文标点的就得费功夫了

everedit它可以用\c替代中文
  • TA的每日心情
    难过
    2018-3-28 11:32
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    8

    主题

    202

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    22334

    灌水大神章小蜜蜂章笑傲江湖章

    8
    发表于 2014-9-11 10:55:28 | 只看该作者
    <div>vanl</div>saa<div>bsdb</div> 如果要保留saa可以使用正则表达式的非贪婪模式

    把 <div>.*?</div> 替换为空

    该用户从未签到

    23

    主题

    63

    回帖

    250

    积分

    童生

    Rank: 2

    积分
    250
    9
     楼主| 发表于 2014-9-11 11:12:34 | 只看该作者
    yisdict 发表于 2014-9-11 10:55
    vanlsaabsdb 如果要保留saa可以使用正则表达式的非贪婪模式

    把 .*? 替换为空

    原来叫非贪婪模式,谢谢,以后再也不怕被吃数据了
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    10
    发表于 2019-1-9 12:56:06 | 只看该作者
    正则是利器,也是杀器…

    用好了,一步到位。
    用不好,瞬间崩溃…