掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 655|回复: 6

[求助] 求助正则表达式,大伙请进

[复制链接]

该用户从未签到

发表于 2015-11-10 22:34:02 | 显示全部楼层 |阅读模式
AAAT
3 i: z  G0 Q+ k/ m<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>8 X' ]4 C8 K% {/ k$ s/ N. B6 d+ f
</>* u/ R7 \7 ?2 a; c4 Z- J
AAAT
4 N2 w) c8 V: G. G: [: y6 `5 N/ o/ k1 E<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br># e" v; V  k- e% O8 Y- _$ r
</>
' D- o4 O0 _' T0 UAAB; ~! @+ x! D+ H) f" ]- @! Y
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
. n3 Z6 ^7 i5 d& ^; U</>
: N6 e$ }* K4 ], lAAB
# z0 _* l4 s; i) k. Q! @! ~8 w/ X  U<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
* V* k& M% d8 N! v</>. V5 c& E# k/ U" p2 Q5 f

. G6 C- W9 @( L! d3 E) U
4 \+ }/ m  h9 {  f% y6 O请教如何把重复的干掉

该用户从未签到

发表于 2015-11-11 01:03:14 | 显示全部楼层
很多文本编辑器对正则的支持并不是作为首要的目标来考虑,所以它们的正则表达式特性并不完整,比如 Notepad2、Notepad++、EmEditor,这三个编辑器我测试过实现不了你要的匹配。一开始我还以为自己写错了,毕竟三个文本编辑器都没办法匹配我写的表达式,直到我不得已换了一个利器,用我写的表达式就 OK 了,:! f3 D2 ]7 J6 B% G/ ^

) y; e( W8 Y7 {/ |8 q6 x* T6 u" g, |9 I# R! [8 {5 m9 a
9 r  v) ?: }$ H, T8 L! u6 y
搜索用的正则串:(.+\n.+\n</>\n)\1*. o( O  W7 b; {; o- b
替换用的正则串:\1% J- u8 E* W" ~" O4 y) X
1 i# ]' Q( Z9 |3 _/ f; Y
原始内容:
/ N) j) C; C4 \/ t) T, U; w0 T: a+ Q$ S$ g% z) Z6 N
AAAT
" f1 o& w6 ~) ~; ~: D" w; I  r; e$ U<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>
1 R& y: c0 e, Y( ?8 U4 g- A3 b</>* W( B; K' V" S4 e2 A
AAAT
) w$ S/ k9 O( E, ^5 G% W<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>: Q! ]" ~) J: R9 ^
</>
) J% {( s' K5 U' S. gAAAT
! Y; T; o/ B/ v<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>, @1 c1 W" k& V- y
</>. {  v$ v2 y- n+ S/ m
AAAT
+ j  D8 M5 u1 L7 Z<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>
4 X. O, K, Q% L* z8 L3 l</>" Q9 L- |1 l) E- ?2 Z; s: l+ S
AAB
$ g; q3 [' G3 ]) f* [0 _/ f<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
, P* Z7 `! O' p# J4 e</>
! p1 c  O; e( d, e+ g+ n  hAAB
# [: }0 J+ |* a* n$ T( V<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
1 w( q" _1 ?  p6 [9 v* t</>
4 M/ S. Z( C. n% |* t3 ^7 n$ v! H% K7 i% z1 f, ^' S( v4 c+ Z
结果:
+ B8 S9 S5 o4 [
  v, [/ T3 l/ t1 l7 BAAAT2 Q+ N1 N" ]; [1 M3 E# O) L
<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>7 f* I6 c; I: I
</>
/ H  _0 [) D1 l' ~( ~- IAAB4 H5 I* D+ f1 Z+ H) }4 p8 z
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>  j5 x6 ]0 {% V: E0 C& \
</>
# {0 @" z; n2 F  k% W  j
  J! F# w7 {/ X8 J: \, j
$ C3 s4 ^& T" I' E% J7 {7 t总结:
& T) l- r$ {+ f) I5 \+ w  w: R+ F& {& ?8 v5 {+ o
重复任意次都可以匹配。
8 O/ |; b- h3 j2 {- w" @/ x# u" `0 Z, C9 V$ g8 P
建议:
7 P9 @/ o. t" [2 \7 }; i
# Y3 }' d  m, I: {, l大家可以使用 RegexBuddy 这个软件来测试正则表达式,它支持比较全,Python、Java8、C#(.Net 2.0 - 4.5)、HTML5(Chrome)、JavaScript(Chrome)、MySQL、Perl、PCRE 8.34-8.35 UTF-8、PHP、Ruby、R... 各种风格的正则引擎都支持。
5 z  Q" o$ d% b( l5 `: C( U: }% a4 P- J, G3 H) G
但是不建议使用它来处理大文本,比如十几,几十,上几百兆这样的,在这一点上面,它就没有 EmEditor 的速度了。建议考虑其它方法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2015-11-11 09:33:54 | 显示全部楼层
gnoweb 发表于 2015-11-11 01:03) `, H& O( K* [( C/ [
很多文本编辑器对正则的支持并不是作为首要的目标来考虑,所以它们的正则表达式特性并不完整,比如 Notepad ...
& \$ B. V" H& s) d
如果是emeditor, 设定 “搜索正则表达的附加行” 就可以使用了..
2 U5 o% q( m& ^$ n5 C数字默认是0, 设为6就只能找到6行, 设为30就可以找30行..
* u$ n4 V, K& H) y

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2015-11-11 09:54:14 | 显示全部楼层
sky66 发表于 2015-11-11 09:33. y( H4 Y" ^6 J! {8 ?5 [
如果是emeditor, 设定 “搜索正则表达的附加行” 就可以使用了..
& B1 ]7 p: N: s7 F- b5 s数字默认是0, 设为6就只能找到6行, 设 ...
3 v* j. d6 W1 }8 E
谢谢指导,我说怎么这个能快速打开、流畅编辑大型文本的软件怎么会不支持这个功能。

该用户从未签到

 楼主| 发表于 2015-11-11 13:05:28 | 显示全部楼层
非常感谢楼上的两位,问题解决了,不过我又发现新问题,还得请二位帮助
  `. @; L& n' t# z$ P; Q$ }' d6 a0 w1 V' `- t5 _) l7 y
有些重复词条的内容并不是完全一样,如下7 q- c7 {3 l; `: w; ?1 Q6 S

7 ^% X7 P7 w' K7 y$ w% `0 _; oAA7 D2 L6 n5 i% R( D) x* }) t
Agricultural Adjustment Act <美>农业调整法( u: a  \* G5 D9 H5 ^- L; M( j! r
</>
' n  h* I+ v; P0 g& H+ OAA
0 K2 X8 D/ Q. n- C8 R7 FAgricultural Adjustment Act <美>农业调整法
9 ~3 @; n  w* h9 @9 o/ I</>+ ]5 ~- ~4 C1 l# J
aa
0 Y4 X; ~6 e# N+ s4 v渣熔岩;表面不平整的熔岩$ T* Z. V0 A( P& p5 @
</>$ S$ ^0 o; U$ K" y& Y1 o# s) L
AAA
  \8 p; l: \1 u; Z3 r% }/ j" BAutomobile Association of Great Britain<英>汽车协会" U2 m$ _2 k/ y6 C
</>& J0 D- ^3 T, E1 @5 H8 P' K
AAA
0 w6 F1 u7 G& a<英> 汽车协会  Automobile Association of Great Britain  + |9 _! ^8 H/ o8 R$ g
</>- s7 G' \2 q" Y# p& A
--------------------------------
' w2 r* I% i. L" iAA
& \6 i" c  R& XAgricultural Adjustment Act <美>农业调整法
  U, E1 Y% B% _/ U</>5 G9 L. b3 u7 C2 l; Q5 C4 U7 e
aa
$ W8 W! P& N% _% Z渣熔岩;表面不平整的熔岩
: W" t2 r6 R2 ~" m  |! I! f</>1 w3 U. q( ]/ y
AAA
, k! T4 Z1 @8 T# w3 A3 _* C+ z4 SAutomobile Association of Great Britain<英>汽车协会8 p- o7 B, d: n3 H1 e2 h6 s
</>3 m, B: ~2 i* G5 v

3 f' N- v5 m& y) a  ]1 D% I请教如何实现,内容不一致的随便保留一条就好了

该用户从未签到

发表于 2015-11-11 14:29:54 | 显示全部楼层
2011star21cn 发表于 2015-11-11 13:05
) z- H5 A/ @* H! f" p$ {非常感谢楼上的两位,问题解决了,不过我又发现新问题,还得请二位帮助+ C# V2 B# q( w, {3 D) X

5 B1 w' O* i- U5 L6 @有些重复词条的内容并不是完全一 ...

7 l( F- v2 l: V5 v% G$ R  Q# \6 ~
% E, B# X& Y, z0 s, V; @/ m8 b% w) i* S4 s6 N
查找用的正则表达式:
2 S8 Z% e/ w$ O! p! T4 {. b4 i3 Q( }6 K1 U! {# ?( Y
(^.+\n)(.+\n</>\n)(\1.+\n</>\n)+1 ~' @+ Q7 ~: g- y1 d6 [5 Q/ z

9 a& N) ?+ O! }1 Q8 A8 h第一个圆括号匹配相同的词条(注意打开区分大小写)
2 _) C' f% R- |7 I2 c! ]第二个圆括号匹配 Body 和 </>
" y" \! N) L. c6 B1 z0 T第三个圆括号匹配和前面词条重复的内容,1 次以上任意重复1 J) @7 y* w6 \# s& w- t* t
2 a! f7 A8 N- w3 y4 G
替换所用的正则表达式:
; J" \5 j- U. u4 Q( p7 c9 \0 y0 L9 n1 Q3 r
\1\2
0 E# X& E! L  j& y6 E; M$ g0 t; ]' I' ~! f
替换部分默认使用第一次遇到的内容:, A/ `/ f, g$ x! w% i1 D
\1 即是第一个圆括号所匹配到的内容
5 C2 E7 p2 b! z\2 即是第二个圆括号所匹配到的内容, a# I1 ?+ D/ F, {
1 _+ x7 Q* \" Y9 ?& M7 N
' D0 z: C: v+ ^% a
经测试,并非所有工具都支持这个正则表达式,RegexBuddy 里面支持这个正则表达式的引擎为:4 C( R* u% Y3 g
$ E. b) x3 @+ K7 ]
AceText 2 & 3
4 D8 Z* g! s. D4 R: VC++ Builder XE7 (TRegEx)
* W8 g7 U) g8 x# D* iDelphi XE7 (TRegEx)
; r# }6 m, e* w2 W& E' R0 @EditPad 6 & 7
, ]6 W7 q, \9 T, u4 o% H) nRuby 2.0 - 2.1
4 \- Q- C) u. h  V+ PTCL 8.65 U' R5 t' s6 s/ |& C/ H  B6 Z
wxwidgets
' b0 g* h" c: x9 ^$ z! A2 K& C5 |4 J4 V1 L
不过 EmEditor 支持,这就可以满足你的需求了:( B: _# {. m, Q4 H' C6 |

# j# ~# I6 B6 J. m9 ]$ v9 Q/ P" W' Q/ A; \& h7 b# d

6 w: f" t& q% X, I* H" D8 \
' {9 X. t* e' J, y; d5 G( @; r8 ~- o8 O0 x$ R- `5 Z& |1 @; @
7 @" ~1 x' K' Q8 z8 x
测试数据一:
( H( ?# J% i8 S& _. u! W+ B, [# ]9 U# t) v1 w) ]  S
AA
: P9 t& X% J  }( k8 I! yAgricultural Adjustment Act <美>农业调整法
% [0 y) {" A( O9 m3 ^</>4 M. f' c; ?4 z5 T
AA
& w! d, v. J' U" u* N2 YAgricultural Adjustment Act <美>农业调整法7 v' F; d3 Y3 s  v! n; ]
</>$ v0 w2 x5 {6 x) ]$ H5 G8 h
aa# ?1 B/ r- I! p
渣熔岩;表面不平整的熔岩* O6 h+ p6 c2 ^
</>
4 t8 N; ^% K; Q; ~% R( X7 QAAA
/ J  F2 p; `. e% kAutomobile Association of Great Britain<英>汽车协会
( T7 z1 f; w. I$ Y  x1 c% Q</>
9 G& ]. W2 t% H6 c9 a$ D$ r$ }AAA/ V8 q' u8 N' ~: H4 @6 M# {
<英> 汽车协会  Automobile Association of Great Britain6 U2 v5 T2 t- m
</>
  E8 d' n$ D/ x

2 j1 S) a, ]( \7 Q! {( x0 L4 u0 \( n: _. H( R2 ]# \0 o
结果:
0 w& S+ o# y* O  }+ ]4 _4 E9 a/ b$ I1 n! ~9 c1 [" G+ s3 b- U" Z* M; o9 q& i$ C
AA  X0 j: q! O8 l* `; x: V
Agricultural Adjustment Act <美>农业调整法
6 p# u9 D$ i6 l</>
0 {& M! Z; R! o5 F' yaa. `% b2 `( s* _; c: R4 g) \6 j5 w
渣熔岩;表面不平整的熔岩
4 E# ^2 I9 |7 g# Y$ z</>
6 U. Y0 E& P1 y. p; B  GAAA/ k; r9 ]7 |! F; }. Q- @5 m  C
Automobile Association of Great Britain<英>汽车协会3 C' T( x: `& }0 _7 t: N
</>

) T: l: @# m( }+ [
5 c% t( W* P# ?# F5 @. q+ b( R# L8 S/ M7 p9 b  c1 o+ ?4 F
测试数据二:" d7 r- G+ J% v+ q! p
+ e$ W' G* C: l; k
AA
1 ^+ Q$ R3 K* s. iAgricultural Adjustment Act <美>农业调整法
7 @; ?) V0 a+ N" K8 F" v</>9 B- z3 m9 w( {" U  O# d
AA* R6 f5 ]* r5 P( O& a; @7 [" B
Agricultural Adjustment Act <美>农业调整法/ O4 X* N" k4 n1 ?0 N% N
</>$ S; S  h" G6 z$ @0 L% i
AA
/ O: t0 m1 G( mAgricultural Adjustment Act <美>农业调整法
7 w4 L) w/ v' A4 d5 _</>( {& H8 o1 p* B+ |1 b& W* s
aa
" @7 v/ a  s9 o( O3 n渣熔岩;表面不平整的熔岩
  F1 ~2 z0 L8 K* `( L</>& C/ s" D  Z* Y, @3 _: v
AAA
" _0 X" D9 n0 ]3 Z! K& `! VAutomobile Association of Great Britain<英>汽车协会1 A( L+ {) _5 Y
</>
0 c1 i$ B5 R/ t' B0 o$ BAAA
# l. }8 d$ i  x0 a' `9 p<英> 汽车协会  Automobile Association of Great Britain
/ t& ], }6 Q4 x; {/ y</>  f% v) V2 l3 ~. G: |0 b% `
AAA3 E5 o6 Z/ |) W8 v  y$ r1 W' k
<英> 汽车协会  Automobile Association of Great Britain
+ e; L4 P. V1 L) i</>
* T3 V' p* A; l$ r+ V4 AAAA7 l7 |( z+ ]2 E* Z" a! L( u) o# b
Automobile Association of Great Britain<英>汽车协会
6 N# z1 G: P* M7 ~& m) N% g</>
) G2 ~7 d" F/ ?3 J" |
0 r) p  {1 b; C1 v5 \7 v) _
8 W# d6 X% i, F5 E& R: a' w
结果# ^' [* W& D' Y3 G% e3 I
7 s: o/ |3 r' x, j7 V  ]
AA
1 t$ F$ L6 ^1 p& r2 a* HAgricultural Adjustment Act <美>农业调整法' q# P$ Y- M3 c+ p# V0 `/ G4 F; s
</>- w  Z8 Y6 e. V+ @9 j* \0 p5 T
aa
! I7 ^! R9 G% t" [- Y6 Y渣熔岩;表面不平整的熔岩3 `: f2 g) ^1 G! F. K& c6 G1 r7 s
</>
. U; `* @0 f8 `9 b" N# U) lAAA
. n  f# j: ?* k1 i0 XAutomobile Association of Great Britain<英>汽车协会
, J' j, `2 A4 @</>
" M- G: O9 U' I1 y1 }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

 楼主| 发表于 2015-11-11 16:22:37 | 显示全部楼层
非常感谢,问题全部解决
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-7-9 05:31 , Processed in 0.022298 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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