掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1567|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
& ?$ R  x! R2 e
* f! w. K1 K4 o3 K" b/ |8 V0 k9 I要处理内容如下:
9 D$ S( }/ J8 D# _' f  S4 }5 \/ P6 U' t
Chinese 中文 汉语 中国人 中文 华侨 中文 中国人的% H6 K; b' L7 Q3 ?) p& v
American 美国人 美国公民 美国人 美国人的 美国的" I! s  q1 y3 \% z% v) F% X/ s

, m# {! \0 i  i7 j全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!9 D# T/ W! q: X, x' N/ a) }* ^- C
2 a8 |" o0 _: T
0 }; w3 B1 H2 y9 E

本帖被以下淘专辑推荐:

  • 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
    ; g) A! K; N- K% O- ]' L$ K5 t你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了
    " P. B% F5 R/ G1 A5 T* e3 x8 h3 d
    因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:070 j1 @7 _4 s! ?/ }( x0 L* }- ~; _- H
    https://regex101.com/r/dTixFz/1
    9 ^# H% r9 w7 J, k! `% J8 I4 O, Y
    这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑 - d5 P! j7 o) Z& L, g8 S
    * j' d! q& \+ X+ N" V5 g' K5 L, K# t+ S
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?
    + F- O, G8 Y- W- h; [8 C2 t6 ?$ i. F1 _! ^5 Z
    # d" i$ C- X/ v# h6 G
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26
    + O& H3 p2 @: S+ X' m0 j, L谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...
    " N+ u* k' T* X1 x9 |7 I& h
    一行最后留一个空格就好了' p$ K: Q  Y5 y/ q" @7 x

    5 J3 f3 x& x( d( L" _0 r或者这样也可以
    + }+ Z' A1 d) O* u2 D$ ahttps://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 编辑
    7 p$ m! P# `3 R0 R% N' r6 y5 H1 C: ]% K- |: n3 R
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    5 ^- P* u, u+ T1 i" u' V替换中输入\1
    7 c' h: Y: v4 b0 @
    : V4 }. i' V+ N; K. i. |见图,这种是保留英文及一个中文是不是你想要的这种结果?; Z9 V% F; ^9 K$ x( R4 q

    / \9 l- p6 O5 I- J% K) T4 ~( `0 k4 R% j! I6 H2 @# I
    如果只要第一出现的中文则. [6 W) N2 E6 l+ N
    查找输入^(.*[a-z] )([[:unicode:]].*?) .*. S2 H2 J6 O" G# c
    替换中输入\2
    & W5 ?: p$ E: Y  y( q! I0 S/ @  ^: t

    2 w5 D" }, w! B" A3 z7 l' F

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07" K; h& y. H& D! h8 l
    https://regex101.com/r/dTixFz/1

    3 A8 G4 q1 K$ G( V3 ~: X你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢2 e  u' @3 A5 I7 g
    第一次时没有问题
    & M- g/ s5 i) Q! U# `' R% x% @9 i" s" t
    , _% A& @: t; ?' t  J3 t# y0 B
    第二次时,替换掉了不该替换的内容
      {9 K1 s5 n8 j) T4 Y
    ) N: q2 a3 ]* Z# n% |8 h7 D  {/ b& L9 ?  `

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22
      z0 w" K" L1 i- b0 S用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*9 M* y: ^5 R- U; h7 y" W
    替换中输入\1
    4 e' j( `4 n: [# |& Y/ \
    谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36' |6 m, y- R+ ^6 E
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢% Z! T) [7 T0 g: v. {$ d0 R
    第一次时没有问题

    / T9 T' f& k3 n" vhttps://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑
    / |1 i, g3 |; r) D- P6 j2 A" ]/ ]6 G8 C$ Q  p  Y' E, [8 O
    谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    / v; ~9 w+ s  `
    8 N+ P6 m# V( b1 O5 V

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data. 1 B4 N3 }- [! u+ w3 C$ A! q
    on the other hand, powerful it is, regular expression is overly used in the wrong places. 2 ]0 M3 [9 x/ A8 g9 `1 A
    % i2 y. a" Q9 i$ f
    To solve your problem with awk,, v! q" a2 P* |% Q& m+ o, Z
    awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    8 s* ]9 N  h0 e3 f3 D9 q4 ]
    # {4 A! m0 l- S/ n1 Z9 xsuppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.
    . l0 ]% X! E) S' \I've uploaded a screenshot, but I'm not sure whether it shows correctly.0 O6 u" _! }6 l, W1 f; K. F

    4 Y4 U( l# Z8 e* n) m

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50$ I& i- q7 K- j- |  i1 j4 V
    awk is one of the best tools, if not the best, to work with tabular data. 7 T) t& u% _3 W. K; r
    on the other hand, powerf ...

    6 _( R/ p/ P) D5 n$ x7 M7 }. x* B$ r3 V- g谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:
    ! g+ m; o" `2 ?8 Z8 |  q& K. m% K5 n7 h( F4 l; T* O9 w1 M
    \s(\S+)(?=\s)(?<=(.*\s\1){2})
    9 I0 }" _+ `+ W9 v$ k) K; p+ ^: o: @& Y4 X1 G
    https://regex101.com/r/ldXeDC/2
    2 L6 ~6 C, @; x3 H- M5 }. I8 [$ Z; n/ a$ d; I( X
    要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    7 l) k; B: c$ ?, I* [一qq群友给的答案:- c& j+ m  x- y0 s# M8 l+ _  [

    # v" W' _0 N- A5 o5 g\s(\S+)(?=\s)(?

    # o! l; M$ K' J# y你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑 ( ?: o, k: F. c8 r0 B
    dongzhi1980 发表于 2019-4-29 15:39  e5 G1 `% ^2 F% _! D/ g! C4 O/ ?5 N
    你看自己发的链接了吗,替换前后有何不同?

    . ^3 `% W) W5 ?( C1 r用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看8 S9 P$ X$ C/ k0 n2 @7 p+ ?
    / y3 B) {  N/ I* W
    替换后+ F0 c# @' r- l
    1. Chinese 中文 汉语 中国人 华侨 中国人的
      # B0 c' ~* w4 t
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    : o6 f8 L1 U' ~& V2 k. i
    2 M3 M" N" k2 L% R, Z" u0 a( X( Y# mEdge不支持肯定型逆序环视。regex101会显示 pattern error。
    , |  t+ e% d3 M: t- t7 P

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:163 G& `. N' L/ `5 j1 N! H) u' y
    一qq群友给的答案:
    . t/ {% l6 H/ Y4 D
    - m/ |: c$ w3 ]1 w9 @* H$ f8 K\s(\S+)(?=\s)(?
    ; e2 ^6 ~8 t1 u' ?4 x' H
    这个例子让我对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  [& D" W% c  i. b/ p
    一qq群友给的答案:
    2 L. E, x- ^- }
    1 W( [4 X: v2 B: i\s(\S+)(?=\s)(?
    ( V2 ]; s# |) U3 {7 f1 q7 w+ h
    这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    ) R# w: F9 N- l- u用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    ; r! g( _7 o" M" Y" e) P
    " K& P1 Y4 Q2 {- D替换后
    / F; }- O8 w& m7 z4 ?
    如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-21 10:56 , Processed in 0.111652 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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