掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1563|回复: 21

[求助] 请教正则表达式去除重复内容

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑 + G5 _2 z1 o$ o" h
: `2 @4 d0 V4 t# G
要处理内容如下:" F" I) b  ?0 b3 i; e0 d
: [% y/ @# L, @. _
Chinese 中文 汉语 中国人 中文 华侨 中文 中国人的( t  J+ I+ g2 z: e5 `; u
American 美国人 美国公民 美国人 美国人的 美国的" q3 g: m* z) B0 }7 o" T4 E% H: Y
1 U7 r1 _9 c+ c( ^" L: I: n& b
全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!
2 w/ ~/ _1 n$ Q8 i1 ~
) ?! z. y& {- p" ?, Z- B) f2 v# C( @7 I

本帖被以下淘专辑推荐:

  • TA的每日心情
    擦汗
    2023-9-2 09:16
  • 签到天数: 1103 天

    [LV.10]以坛为家III

    发表于 2019-4-26 15:58:47 | 显示全部楼层
    这个已经在正则能力之外了,正则的能力是很有限的。你这一类用awk处理应该很方便。具体需要可查手册。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:07:31 | 显示全部楼层

    该用户从未签到

    发表于 2019-4-26 15:01:20 | 显示全部楼层
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了

    该用户从未签到

     楼主| 发表于 2019-4-26 15:19:11 | 显示全部楼层
    klwo2 发表于 2019-4-26 15:01. |! D( L+ X2 F6 H& G2 _% h( s- K  ?: w
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了

    . B6 h) O- A( o6 w& K6 O; A/ q; ~因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    / r7 j* [+ \$ E0 L2 f: {4 |https://regex101.com/r/dTixFz/1

    / l: g1 q. J2 R5 e: \& Z% g, F这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑
    % O7 q. Y6 }  s' r$ d' q6 }2 x
    + q5 w  H% Q3 G谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?* o9 I, [& F0 I( L; m* O! Z
    ! [8 K) T8 y' ~1 E5 e* _
    % K" v) B3 u* `' k- ?3 u  {
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:266 x2 ?- j* o0 r8 S
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...

    / t5 [! S' z0 E! m6 _3 p0 G一行最后留一个空格就好了' a, }* g  e( S: O) z& V

    ( Q. d! W3 z+ h' z4 [或者这样也可以) n* ]2 s3 s- b$ P( b7 M% p
    https://regex101.com/r/dTixFz/4

    点评

    你这次给出的链接,可以通过反复粘贴的方法解决去除所有的重复项,谢谢!  发表于 2019-4-26 16:18

    评分

    1

    查看全部评分

  • TA的每日心情
    郁闷
    2018-5-17 09:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-4-26 22:22:07 | 显示全部楼层
    本帖最后由 y8888 于 2019-4-27 07:43 编辑
    ! k' O0 }/ F) H3 Y$ \2 m4 S" O9 v/ T4 V# P0 q& w+ \
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .** Q% u8 u/ J& J
    替换中输入\10 W4 K0 J" ^  W
    1 e! }: ?# Z  T& N# V1 f' v
    见图,这种是保留英文及一个中文是不是你想要的这种结果?" ?5 E* I+ J5 c# Z

    , V" Y- C5 A7 J% R! Z) j0 v) t$ R$ e9 L. |7 L5 i4 d
    如果只要第一出现的中文则* M& Q7 z6 X# o9 Q; o; w4 q
    查找输入^(.*[a-z] )([[:unicode:]].*?) .*
    . W$ C7 z' o& r  y5 z替换中输入\2: J& M  m, ]9 I* B) Z
    1 o' o& H  m7 X: f8 d

    7 f" `* q# n4 K! Y

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07( R. |0 i! ^" V2 L6 g/ R
    https://regex101.com/r/dTixFz/1

    . j+ y9 W5 g- X6 G你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    ( D9 s3 b# z" m) j" e7 j; |第一次时没有问题8 k' m* N7 q+ F( S& W+ l$ a
    0 x' k9 V( i! o" @8 q
    9 M: L- ~* {3 Z9 i
    第二次时,替换掉了不该替换的内容: o4 M  n8 {! T6 y  Z4 f' v. t2 Q
    4 K- S; Q, D- @0 e7 b
    6 S$ w8 _. z3 m8 G

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:220 v4 B& r  t2 @: f" ?8 }; Q
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    * `. T0 |' {1 ^* Q, O替换中输入\1
    1 n- z  l) t6 r5 G" L8 @0 E/ f
    谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:369 q* l/ A6 ~! M3 `
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    ! Q8 w" [1 ]1 C. U/ C% d0 E第一次时没有问题

    " u, D; i% F  g6 X8 I0 Ohttps://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑
    " o# ^5 [: ^& D6 X! q. J- x/ x6 v$ ]* A6 Q8 n5 T7 g( o; ?" z
    谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    % w" T( R$ j- S8 s8 C
    & M; O  i" `% ~# w  O' ^0 f

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data. 6 x/ k+ Z# g: t) ]& s4 f
    on the other hand, powerful it is, regular expression is overly used in the wrong places. # X$ Z, A$ w, q7 h
    4 w0 m* ~% d0 L
    To solve your problem with awk,* u( F: {  [6 b3 H6 @
    awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    % q# x$ c& W' D9 F. V5 s
    9 F& U: H. H) c5 q2 Ksuppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.0 q. n- N: e$ |* |$ v% G% a7 n
    I've uploaded a screenshot, but I'm not sure whether it shows correctly.
    , B. q0 Y8 f) p, [' d& ]# G9 F9 s6 M" z5 I7 s. ~; _2 q

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50" i% X/ U8 z/ r! K3 G
    awk is one of the best tools, if not the best, to work with tabular data.
    : R. m+ W3 R; ^/ x( m7 f- I3 a$ pon the other hand, powerf ...
    ' a' M3 u4 I* C/ X! S1 h
    谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:/ [7 [, v1 X  t! `/ r

    ' M: s5 L% a0 `. R  [: T+ |\s(\S+)(?=\s)(?<=(.*\s\1){2})
    : K3 _0 R; {- K# d* g9 D* O9 N0 z+ L& @. ~' k+ H
    https://regex101.com/r/ldXeDC/2
    8 p' J/ ~1 d: }) ?: X" {! k2 d8 P- [
    要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:161 s) v- T1 Z% }
    一qq群友给的答案:
    & J' c2 |/ H9 h$ c6 j, S* F: o# g% W7 r* Z) o3 ]( \" y9 _' r" T
    \s(\S+)(?=\s)(?

    0 \$ ~8 f2 f6 W1 s* i4 o你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑
      \& ^; T& ~" H3 |! B  A5 {( `
    dongzhi1980 发表于 2019-4-29 15:395 F# b, O. Y* X9 v' c  T9 R7 ]
    你看自己发的链接了吗,替换前后有何不同?

    . f; i1 ^+ K6 A2 Z  C用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    3 l+ a9 B1 m- q0 @; A+ d& X! a! P- x" v% M
    替换后
    ; V+ }; p8 G6 S! c0 S. b& k% Y
    1. Chinese 中文 汉语 中国人 华侨 中国人的5 o1 z! H( h0 T% E7 M. W
    2. American 美国人 美国公民 美国人的 美国的
    复制代码
    5 d, T* E1 e( r" @
    * O3 C2 T) d* p) C; K
    Edge不支持肯定型逆序环视。regex101会显示 pattern error。
    " q* ]# ^" O. [7 h, P

    评分

    1

    查看全部评分

  • TA的每日心情
    开心
    2019-6-23 00:02
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16/ w# W4 ^: W% Q$ _, f+ ^
    一qq群友给的答案:4 A: M. |/ w$ M1 m2 a( m0 L1 n
    , R& z9 Y3 V  }
    \s(\S+)(?=\s)(?

    5 A; L; S$ ?% {: s4 i0 R% z这个例子让我对regex look around有了更进一步的理解,前一阵子学习的时候就这一部分理解有问题,太感谢您和这位群友了!
  • TA的每日心情
    开心
    2019-6-23 00:02
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:54:13 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    " t% N( t# v2 o1 a一qq群友给的答案:1 e, v) X- b* |
    2 ], @+ V9 ?! \7 j2 F5 [+ T5 ]
    \s(\S+)(?=\s)(?

    - F2 n3 S/ Q0 J- F( A( V2 {这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    ; D" M- ~% x, C0 {+ S$ F* {4 x用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看5 Z. b) B0 }/ K. r1 h7 p

    ) Y' Z% ~; v4 b  j7 ?替换后

    : X2 R. I5 E9 k' L如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-17 23:15 , Processed in 0.103236 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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