掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1757|回复: 10

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

[复制链接]

该用户从未签到

发表于 2014-9-11 08:37:58 | 显示全部楼层 |阅读模式
本帖最后由 wubis 于 2014-9-11 09:18 编辑
, M/ _) a5 R! ?' T5 \7 h4 Q% Y6 J
- k2 G4 F- X3 D5 x; i4 f问一下:
6 }& h- X( a( a  ?/ c4 G) _7 k* I( X& S- S  E
比如有一万个网页连接,分别是<br><div><a href="http://x.cn/z____.html">____</a></div></p>,下划线里面是26个字母和数字的任意组合,我是个完美主义的。如果想删除这些内容,有什么办法呢?
; Y0 _' w* j$ L4 j1 ], @5 v以前用正则表达式(npp的),我丢失过数据,比如
* i$ v4 Z* p$ J" @% F! A# L, F<div>vanl</div>saa<div>bsdb</div>  B/ w- A. m9 M0 R  [/ M
选择\<div\>.*\</div\>替换成空,有时候它会把上述全部删除,在同一行也是如此。
2 w+ Z% z2 t# c$ @( {) Q" ^( _+ P/ }1 O, k' @- `4 _: e2 `& T
对于那一万个连接,我是先注释掉,:<br><div><a href="http://x.cn/z 替换成 <!--0 {, T2 f. y2 t
.html"> 替换成 --><!-- ! H1 ^9 y+ H5 j$ B
注:这个中继连接个人认为是绝杀- b# K5 Q0 F' H9 Q. l1 S  ]
</a></div></p> 替换成  -->
9 ^9 Y1 H2 m' I$ J. B5 ?" f并假设这三组标签全部只在网页连接用过,先抽样检查
& Y1 G% _( Q% L8 z7 H! H- {' ]7 ?然后把<!--?  替换成<!-- 0 r: r* A* q3 J" Z. r5 H; l8 N
?代指26字母和数字,这样一般2小时就可以把任意组合搞定,最后把<!---->替换成空就可以了
; J, T) ~, Z& F2 {2 N4 o0 F& @. M" V% C' E  f. W2 u
具体替换操作- d2 m- l2 a9 ]' q3 g
1.为加快类似aaabbb的替换,把<!--a替换成<!--时重复替换,这样子变相加快速度

本帖被以下淘专辑推荐:

该用户从未签到

 楼主| 发表于 2014-9-11 08:55:34 | 显示全部楼层
本帖最后由 wubis 于 2014-9-11 09:57 编辑
- G2 A! F4 m/ _+ S4 ^7 u# I! m+ Q5 x' W0 a1 B. H. z5 C( m
补充) l! O6 }; j+ [% y8 r; j5 l- C
1.很多大都会用css调成display:none,这一点挺好。我有点性能癖,觉得如果css里面一大串,会不会拖慢渲染速度' A! @  @; N  r3 h
2.把mdx转出纯txt做全文搜索的,或者用mdict全文搜索的,会不会搜出被隐藏的内容
  y; m+ v* P  ]1 D3.getdict能够不导出display:none的文本吗,如果这样,那就大大增强使用性了。如果有,麻烦yhssdl有空时研究以下,谢谢了。! R6 d* y- h0 m4 w. p' [& T8 r
4.以上3点未经考察,能力不够,手头又没有用css的mdx

该用户从未签到

发表于 2014-9-11 08:55:45 | 显示全部楼层

. D* x$ X" g6 s2 z+ P) F% z& R% F  N% S. }2 N! E
自己写正则比较头疼。
/ E+ H$ P+ e1 E7 C
% Q% H. C1 M# G% r6 d( s- N4 Q  X可以用TextForever ( http://www.comicer.com/stronghorse/software/#TextForever ), 这个“文本提取”功能好用,我一直用这个来处理下载下来的N个网页文件(当然,事实上,可以在下载的时候顺便就处理了,不过为了防止误处理,我一般是把网页所有代码都给下了)。可删除“起始点和结束点之间的内容”,注意设置好起始点和终止点(以及其他设置),以免误删。
1 L) E# z% u4 C; E9 G# L
5 R; _! c2 I5 M2 m! W/ m0 g

# N$ |% _$ C# Z& H% D也可以试试Search and Replace (http://www.funduc.com/search_replace.htm )- v+ n* }) w+ n

3 O1 R6 r/ _) H) j; t

该用户从未签到

发表于 2014-9-11 09:21:32 | 显示全部楼层
本帖最后由 itarcy 于 2014-9-11 09:26 编辑 8 R- f& [7 u" c4 F5 m$ D

7 F+ l5 e. ~, c3 S  p5 U嗯O大的那工具老好用了~
8 e1 c! l* t$ X+ o; L3 m0 d8 w' R! Q. c! e; `# g
另外- e( N. N2 g3 Q+ }; L
<br>保留么,<br>是行首么
" T0 }1 e" Q& [8 n如果不保留<br>,<br>是行首,试试
  1. ^<br><div><a href="http://x.cn/z([a-z0-9]+).html">([a-z0-9]+)</a></div></p>
复制代码
9 n! q% M7 ^  i
保留<br>,试试
  1. <div><a href="http://x.cn/z([a-z0-9]+).html">([a-z0-9]+)</a></div></p>
复制代码
- q% F9 s* D5 O

* F) n0 B. x3 _* U这个正则,在emeditor、akelpad、evereidt、UE(perl模式)里面应该管用,剩下不知5 l2 E0 p3 _4 l; n# u

" {) o4 x4 f' a: {$ i再,您这还有半边<p>去哪儿了 - -!+ o9 \& D* l, ^6 m5 W# L" M

该用户从未签到

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

点评

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

该用户从未签到

 楼主| 发表于 2014-9-11 09:43:03 | 显示全部楼层
本帖最后由 wubis 于 2014-9-11 09:45 编辑
7 n- C+ W' e$ x0 L" b; X/ S. H' y: b1 M  T' ?+ t) K
谢谢itracy9 L0 g5 u' F) T) Q0 |3 o; U
不过,还有更狠的,比如
, z8 o) c' G5 psuperman
' h, {7 G( o  h9 O6 S<b>superman</b> <u>noun</u> /我是一大串音标/ <br>超人/超级人/超级牛人) F$ r+ Q; {5 B$ G' m- d
</>
& I7 S7 t9 c! u: S怎样把音标删除,难道把所有带/的标签都先变成没有/吗* m8 I" v5 D/ \, }5 t$ O
纯属炒作,如有雷同,那是你问题7 u. I* o/ C! I
4 S5 m, t+ t% R8 m4 p9 l  Q
正则表达式有区分中文/英文,或者东亚文字、英文,或者英文/非英文吗

该用户从未签到

发表于 2014-9-11 10:11:55 | 显示全部楼层
本帖最后由 itarcy 于 2014-9-11 10:13 编辑 * D; P. q. N$ `) x  S- t4 I

7 `/ o1 S4 \. }* M音标如果都是那个格式,而且其它地方没有类似格式的文字,3 @+ @4 y9 b# c) R7 Z1 N% x
可以试试
  1. /([^<>/]*?)/
复制代码

. F9 r5 J3 M4 l+ @! u8 d% o. E: _3 I
英文就用两种\w或者[a-zA-Z],
1 ]$ e) v" x1 E' J2 {1 w) N* ^$ F比如纯英文的部分(\w+)或者([a-zA-Z]+)
4 F6 F& m% a1 t  R" d/ A: T8 k+ o
7 m. \/ g/ S/ T% r; q$ i中文就有些麻烦了,据说是每个字符都有Unicode范围的,您可以去百度一下8 n: f  `" I7 w* l' X
可问题是不一样的文本编辑器支持的不太一样,我自己试过的话,([一-龥]+)一般都管用
0 V/ g7 p# L9 b& H不过遇到中文里面夹杂了中文标点的就得费功夫了
- ]6 T2 P( `% e, Y+ R; n! ~+ u, g' f8 d; ?* @! l0 s, x
everedit它可以用\c替代中文8 d1 Q4 o4 q; `
  • TA的每日心情
    难过
    2018-3-28 11:32
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2014-9-11 10:55:28 | 显示全部楼层
    <div>vanl</div>saa<div>bsdb</div> 如果要保留saa可以使用正则表达式的非贪婪模式
    $ B, g! o) }% Q- E2 q3 A
    - F& P4 G; q3 U% i& s) f7 A把 <div>.*?</div> 替换为空

    该用户从未签到

     楼主| 发表于 2014-9-11 11:12:34 | 显示全部楼层
    yisdict 发表于 2014-9-11 10:55% b. E( p% s* A; v
    vanlsaabsdb 如果要保留saa可以使用正则表达式的非贪婪模式
    / S: }7 e2 u/ i3 k, E9 _9 B- {* C' f! F
    把 .*? 替换为空
    * r$ o, b  A! A1 b$ m  Z
    原来叫非贪婪模式,谢谢,以后再也不怕被吃数据了
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-9 12:56:06 | 显示全部楼层
    正则是利器,也是杀器…9 \2 p. K0 f4 Y; i! k! r, ~, P3 D
    1 F' j3 P% C6 F1 v: g
    用好了,一步到位。4 }/ @) U. H$ \4 d
    用不好,瞬间崩溃…
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-6 15:00 , Processed in 0.023800 second(s), 27 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表