掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 632|回复: 6

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

[复制链接]

该用户从未签到

发表于 2015-11-10 22:34:02 | 显示全部楼层 |阅读模式
AAAT
. A6 E- ]# u0 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>+ e0 C+ c0 y2 x" u9 H# |+ ]( @
</>
4 G& Q! R; p: q- D- ]9 lAAAT
: N9 g. i8 `6 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>
/ N; Z' K$ ]5 C4 r+ \2 t0 `</>
( q+ o1 G# u- v: Y4 ~* E2 |AAB( ~7 k+ }/ p+ L9 `! g
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
7 f0 d1 @0 l! g7 G# S" T</>
( E; y+ S2 L8 A3 U8 _" u% K: TAAB  S& N7 }. ]0 \- e' l; m* B
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>. Z4 S6 j& s% J7 t; `* o- {
</>. J- P, x( g2 F/ L
1 N/ Q0 z% u( F+ n; u2 l9 d4 j
) Q" k' h) c, }, D; p+ g: `
请教如何把重复的干掉

该用户从未签到

发表于 2015-11-11 01:03:14 | 显示全部楼层
很多文本编辑器对正则的支持并不是作为首要的目标来考虑,所以它们的正则表达式特性并不完整,比如 Notepad2、Notepad++、EmEditor,这三个编辑器我测试过实现不了你要的匹配。一开始我还以为自己写错了,毕竟三个文本编辑器都没办法匹配我写的表达式,直到我不得已换了一个利器,用我写的表达式就 OK 了,:
) T# j! T2 {, r, Z5 f& j2 U: Y, C% y3 b1 ^* f8 E  V* F4 O7 _: _
- U4 q; E( B' Y! Z* t
9 L/ e  F* }5 Z2 a4 t8 D
搜索用的正则串:(.+\n.+\n</>\n)\1*
  ^( L& X( n/ [) p6 c/ d4 t% Z; ~替换用的正则串:\17 O& \( \7 q$ u7 s! {0 g( R

! p2 U5 T& X1 q- O. }原始内容:
  ^' ~# v( `: a- Y/ s& q% R3 g* G. h' g5 [$ V" M- S" u
AAAT8 G1 k; S7 A, t( z1 j1 i& 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>5 x) ]5 R# M% t' N" @' |) Q. P9 |
</>
* t1 v* n4 ?( j  u& A0 J% S/ FAAAT8 g) U& c# @: K8 N1 R
<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>
) m! w" D, w- ~7 b! |6 L6 q</>
1 d' y" J1 {, p& N3 ?" kAAAT
& E: b  [6 R* t/ w# o6 c; s& ~" g6 g<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>% K2 d5 o  p6 i1 ~; t, r" L5 S' T
</>
7 ]  j% L$ V* @5 X5 a2 d5 [AAAT
: J6 W5 }$ A0 u" [2 h' J2 c* D<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>
/ ]0 r+ y( k. G) a4 u% p9 T</>
/ \- K8 u3 V0 b. I9 iAAB6 R; H( V, t1 ?5 i# C
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
) o8 p! l8 o# Q+ B2 d3 j9 q# n</>- ?  ?6 C( `8 X# q. @+ r
AAB% O1 e, [# c/ p' P) r
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>6 t. [9 ^7 n' I% D
</>+ _# ~2 _5 x, o7 k6 |9 [- C5 B( ]
/ c: E6 F1 s" D' p. W8 g
结果:7 H: {/ B1 I1 g. x2 O8 n2 G
" v5 V# o# A+ X8 u3 ?+ K; k
AAAT! Q3 e$ x& c% }, Q# R/ g
<h1>AAAT</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Anti-Aircraft Armored Truck 防空装甲车</b><br>
- o( @7 o* G0 I1 a: k9 I* }</>; r) M( P& @& f6 U# A
AAB. J0 Y6 |/ N+ j( b3 n3 r
<h1>AAB</h1><p><font color="DarkMagenta"><i>abbr.</i></font><br><img src="file://dot.gif"><b>Aircraft Accident Board 飞机失事管理局</b><br>
- l; l# x% g7 D2 I</>5 H! K8 h# G* A9 G8 B; @. Z& y
' q; B+ ~1 w( f; O  b

9 E1 Q+ \' [% L* I" i, @) c) H2 E, Q# u总结:
6 g8 x  u) }% d8 N; d% u8 |& y7 k0 j( X4 T3 s
重复任意次都可以匹配。
3 l. d& Z) g6 w' h' ~
$ l; F2 K" ]! l3 N5 X建议:! |% ?6 f% [' P- H( a
* |7 ^: K1 N$ G7 }# }# h
大家可以使用 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... 各种风格的正则引擎都支持。
3 Z/ X9 c/ R) J  P8 ]& @2 \: q& t
6 j3 |! J- J; P4 S# @1 K3 G! [但是不建议使用它来处理大文本,比如十几,几十,上几百兆这样的,在这一点上面,它就没有 EmEditor 的速度了。建议考虑其它方法。

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2015-11-11 09:33:54 | 显示全部楼层
gnoweb 发表于 2015-11-11 01:03
- ~+ _3 H9 a& n' p  Y, z$ n很多文本编辑器对正则的支持并不是作为首要的目标来考虑,所以它们的正则表达式特性并不完整,比如 Notepad ...

  k. q. D6 h# V- x, n9 X' b如果是emeditor, 设定 “搜索正则表达的附加行” 就可以使用了..
9 L- j3 F# D8 v) r数字默认是0, 设为6就只能找到6行, 设为30就可以找30行..: a8 h$ n1 a& D# N4 E, G6 J

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2015-11-11 09:54:14 | 显示全部楼层
sky66 发表于 2015-11-11 09:33
( J' \+ T" s$ q! v6 a; }' Y5 u  U如果是emeditor, 设定 “搜索正则表达的附加行” 就可以使用了..% E8 Y6 f. _; J* f- c: _
数字默认是0, 设为6就只能找到6行, 设 ...

/ u) W% [! A0 \* r) O谢谢指导,我说怎么这个能快速打开、流畅编辑大型文本的软件怎么会不支持这个功能。

该用户从未签到

 楼主| 发表于 2015-11-11 13:05:28 | 显示全部楼层
非常感谢楼上的两位,问题解决了,不过我又发现新问题,还得请二位帮助! _# Y3 h0 T  S) T
% ?! @  `, G* X2 j+ L
有些重复词条的内容并不是完全一样,如下
% l7 R7 s9 e; Q7 M% Q4 n, G4 U2 v1 P- \5 F! p' s
AA
, I  x2 O1 l% }" V( \  F! K& KAgricultural Adjustment Act <美>农业调整法+ R, t; V9 M. q) h9 `/ y* p6 e
</>9 X& x" o0 q$ i; Q" I
AA0 V% |. g* {# l' `) r6 q+ @
Agricultural Adjustment Act <美>农业调整法
* B: O9 ], o6 ?, `1 a</>
. V% l+ J1 ~/ y+ waa% _( {4 K- u& Q( W  r
渣熔岩;表面不平整的熔岩: P4 {" ]' {. `' s9 ~# {
</>: }/ n. {- A, l0 l2 ?. U
AAA) g0 c+ I' u- t4 G1 S1 I
Automobile Association of Great Britain<英>汽车协会6 J4 O/ i9 M- j: T6 t  w9 t0 K
</>, W3 y2 h' t. H9 F2 f
AAA/ Q2 N/ c9 [! o$ e8 D( [! x
<英> 汽车协会  Automobile Association of Great Britain  5 X8 F  t0 @( D) N' A' m! @
</>, l: P+ E; G6 K: Q' w
--------------------------------) w: w% g8 B  U3 a0 n" H5 m
AA1 @1 \6 `6 j! |3 c# @
Agricultural Adjustment Act <美>农业调整法+ C" O, S! }9 _! A& z
</>
& P' q2 [( D' p" H5 g% qaa# |* Y9 Q2 ]6 W
渣熔岩;表面不平整的熔岩
5 r5 \* S  K- ?) J" y6 P- v+ W: p+ i</>0 ]; ^8 v0 C9 ]6 v$ r
AAA
( V! W" N" @# I3 U" S! Q! l5 lAutomobile Association of Great Britain<英>汽车协会
( _# x" R1 S* {9 d0 _* R" n</>/ x: B, }4 ^2 Y6 V4 T0 X) G) ]

; o+ q3 ^5 Y) |请教如何实现,内容不一致的随便保留一条就好了

该用户从未签到

发表于 2015-11-11 14:29:54 | 显示全部楼层
2011star21cn 发表于 2015-11-11 13:05; ^0 O( X/ w& j$ q, \2 F
非常感谢楼上的两位,问题解决了,不过我又发现新问题,还得请二位帮助. B: c! X/ I. E$ j

- M. ~. w% E  `  c: P有些重复词条的内容并不是完全一 ...

" n$ @& M2 g) J% ]
6 g! S0 Z9 t0 X
& i) q' ^/ y2 g6 |6 f8 _查找用的正则表达式:3 b: o" u6 a7 E) d* \; S+ f

1 \3 ]- s" a9 g, Z* L( O% P$ k(^.+\n)(.+\n</>\n)(\1.+\n</>\n)+
0 Y% @, W4 a2 M" e9 C5 O3 }$ z6 w' r9 i2 q. G, C  [' ]; H1 [; U
第一个圆括号匹配相同的词条(注意打开区分大小写). C$ V" n% H' ]. s
第二个圆括号匹配 Body 和 </>
. t1 C8 o" c  j; N1 D7 n! g* @5 a第三个圆括号匹配和前面词条重复的内容,1 次以上任意重复
" |% a7 N7 ~/ N  J( k
" \. b2 m& _: u) u# \5 s替换所用的正则表达式:, c5 @+ x$ Z. K1 f  D+ L' F

7 f0 k6 e/ L8 e5 S4 i\1\2
" s* \- ]1 E1 Z; N+ C6 x3 F' _3 M7 b
替换部分默认使用第一次遇到的内容:
) H8 i1 h  C) w' N, \\1 即是第一个圆括号所匹配到的内容. Q5 F  S6 N& _" D1 J# Y2 u
\2 即是第二个圆括号所匹配到的内容% |8 @- M# W/ g
) q+ C# n7 R2 L4 t

" U) o' {) r2 l8 {. h; K1 u1 a; `  n经测试,并非所有工具都支持这个正则表达式,RegexBuddy 里面支持这个正则表达式的引擎为:
& h" Q0 G3 n  r$ N
' @- c7 Y: s; ~7 ~; C) Q( m  JAceText 2 & 3& ?7 v, {, N" Q! w7 \
C++ Builder XE7 (TRegEx)0 m$ R/ |! n  h2 x, ~
Delphi XE7 (TRegEx)8 e/ ^- u  ]- b7 j# m/ P
EditPad 6 & 7# B2 U! m7 ^8 @8 ]
Ruby 2.0 - 2.12 M1 y; @: j& ~5 c
TCL 8.6
/ t4 Y% }6 D4 G0 N5 jwxwidgets  b1 V( A, _; t6 V
0 u4 G: u& t" Q0 ~; W: h" @( Y
不过 EmEditor 支持,这就可以满足你的需求了:
2 J: Y9 v4 L- T( [% G  x
' \7 V: x+ D+ F5 e4 i$ j: [' u1 D5 l9 b. j2 s4 o# L* h; Q

; q) O4 e- P( {: x
7 S( E# k6 W! j0 L
( u% u5 @+ o# p2 c2 Y; o
  y$ V! j% Z7 n" W3 m测试数据一:3 o. T( L" _9 A  @

+ ]/ h  z4 M' z4 E2 p* C6 g5 [AA- l* j  K' w; ?4 }" [
Agricultural Adjustment Act <美>农业调整法) l+ P8 w6 w0 l( s( ]+ M0 Z
</>0 o9 ?+ @- S0 ^7 F9 C
AA
; V  N. \2 s6 P! |- z: GAgricultural Adjustment Act <美>农业调整法
- U# A7 s4 r* t: q: ?</>
3 U. x, j6 B5 G  A) ^9 W6 {# Vaa
% N6 H. V  R( m" Z9 \! W& n+ w) B渣熔岩;表面不平整的熔岩
0 n2 v0 }4 S  y, f# J+ l6 J</>
/ r$ m: w6 S) a) n) g' x1 g0 ?AAA
5 C1 p& {) ]* T' j" W! D! E6 sAutomobile Association of Great Britain<英>汽车协会
6 R/ B6 i2 K5 x7 R</>$ G3 e8 f3 G3 U2 v0 z9 e$ @3 o
AAA
; e/ w6 V: V4 q7 h. Y  R<英> 汽车协会  Automobile Association of Great Britain
- K5 c* f( h/ Y$ e+ O2 g% y. U</>
( ?3 G- x. a0 K& t( s

# w0 x4 ~$ t! O: c; G! y. V) L' ~& n7 U' M5 I
结果:2 @4 o1 [( k, y5 O9 _, c. t% w
0 k+ ^& N7 G! R
AA
6 E& h0 b8 u& I$ @' h; T5 ~Agricultural Adjustment Act <美>农业调整法; e* L7 w& S0 [' H
</>
% c0 W8 s% c' F4 Q  Qaa' Q- I  z6 _/ }: I5 {
渣熔岩;表面不平整的熔岩
8 T4 U5 W* I; R* r</>
: E8 h: x1 S7 q1 D) k9 VAAA5 c- t! n2 p+ ?1 l' m
Automobile Association of Great Britain<英>汽车协会
. d. e# }& V5 N" z! W% v. \9 R( T</>
# n5 Y% L9 ^( [) [

$ \# i  |3 T4 q9 S  z' ?. V: _4 P* Q4 p) N* M- H2 F
测试数据二:
/ N) j! o  R  |& L$ H9 d/ g  P; ~5 r' [& F+ u
AA
; k% o+ t8 P6 D; R0 G- Z$ m% |Agricultural Adjustment Act <美>农业调整法8 r4 N0 ?2 s5 d& ?% y- D
</>
& F  P/ d% L4 V6 F4 B( E1 |% UAA
# Z, {* \* B) X1 l( J* lAgricultural Adjustment Act <美>农业调整法4 v, K6 z4 F$ s& o! e
</>. a- w8 v# v4 q
AA
" [. k: |' k* a/ d" T  g6 BAgricultural Adjustment Act <美>农业调整法4 z; H2 o$ {8 I1 \7 X
</>7 r& G; c  m4 U. Z
aa: n, ]' t7 `/ {/ Z# C4 _6 m  S
渣熔岩;表面不平整的熔岩* n) T+ l: r9 Q* S4 j, ^
</>
6 s2 _/ x7 m3 s% l0 _5 BAAA
9 @0 J- K3 {- }4 r' M7 L' vAutomobile Association of Great Britain<英>汽车协会
! q% _; c* {! |0 V4 F</>
) K, N6 u2 O! h% ?- M  OAAA* [4 y: h4 W7 F* b! p: T. b
<英> 汽车协会  Automobile Association of Great Britain2 s1 l6 x# C; l
</>
' x  V4 I2 u2 K* S! [AAA9 r5 z1 }: I* s" I  L% c6 B
<英> 汽车协会  Automobile Association of Great Britain( c9 V) S. ]5 a
</>$ g! G. O! \' m' k; V
AAA
5 t: g. |# a& M+ N" y/ ^Automobile Association of Great Britain<英>汽车协会+ _. }* n0 P" {; D9 l: E
</>
+ ]+ s9 f8 J* r, o& m
0 A( T0 A' S- H/ P! C% |
$ S# E) \  O/ o- ~8 i2 z. x6 f5 L
结果! t/ @- U& f/ ~6 H6 B( O1 I/ S
3 r0 Y& Y( S9 I6 {: {
AA
  Y. L6 [/ F$ n2 f7 dAgricultural Adjustment Act <美>农业调整法( r( o- m2 j. [; |! O  m
</>9 N: i. O3 d$ D  q0 x7 s: l1 P4 |
aa
$ K4 d. U4 g2 C7 S) u8 |渣熔岩;表面不平整的熔岩
1 `* ]' o. L9 q0 x</>
5 L' L8 _8 m% J1 s; ]8 k- TAAA% O9 o- c6 W9 G9 k7 E& S7 }/ @
Automobile Association of Great Britain<英>汽车协会% ~7 Y6 X  Q2 c. h
</>
* d/ u$ i5 m: ^9 N

本帖子中包含更多资源

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

x

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-5-8 09:25 , Processed in 0.022288 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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