掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1595|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
' X% q" o2 T5 g3 I! ?3 E
: P/ h: ]# a- R  f& {9 \要处理内容如下:0 u; |: m6 f; a3 E/ ]
& n6 a+ D6 l  X2 N" m& i3 s* B, W" ?
Chinese 中文 汉语 中国人 中文 华侨 中文 中国人的
. S, S! x  C/ Z8 A% `0 GAmerican 美国人 美国公民 美国人 美国人的 美国的
! u  P+ c- ?; e' N# Y& t4 a: \+ q3 S
全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!/ ^9 n' B- _' @) Z- }
! [4 e. h* Q% _; `4 s

, O# v* G* T1 M" |3 d$ B0 s

本帖被以下淘专辑推荐:

  • 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; Y* E; l# Y% v5 p# W1 P. O6 j
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了

    9 l+ z2 q8 ?. f1 W! W因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    $ M; ^& o7 [9 R- \& O! A: ?https://regex101.com/r/dTixFz/1

      Q  P( ]8 G4 J+ P8 d& a) Q这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑 5 F; g. L1 d- |0 u, K
    # Q1 l2 w8 H# C! h8 \
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?
    5 ^# ?7 J$ y$ K  z5 a6 L  Z, @: Y
    % A* |* `' Q" i. J, m1 d  b7 s3 ^3 q$ L, K* ~: x% o
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:266 }6 x$ g: J9 x. P& P8 b/ e
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...

    8 o& T: O. X7 {* w3 s7 }一行最后留一个空格就好了
    ; C' ?( `# C8 U) ?( s' w3 R( @2 H1 B6 D* j% L
    或者这样也可以/ Y; Z4 e$ J8 }  N' z
    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 编辑
    , K0 Z# S3 [% c: c0 ?( q3 E( S: J- G) z0 R3 [. U
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*; U6 o7 I0 Y3 T, L7 u/ Q
    替换中输入\1
    5 R! r+ V  q8 k6 R  T5 W8 E1 ~( j: W$ E+ r1 `6 P
    见图,这种是保留英文及一个中文是不是你想要的这种结果?* G# h4 u2 i" v& a' q  v
    . W- L  L) b' Q) a0 g! m7 E' v
    1 i  W5 S4 l5 f5 q2 G! r( _  j
    如果只要第一出现的中文则+ o2 ~& B6 R$ [, S. y1 U( h
    查找输入^(.*[a-z] )([[:unicode:]].*?) .*
    & Q' d9 q* ^6 q6 b' P" T0 p! G替换中输入\29 U  v3 T2 }8 q( D- K0 n
    # k( K5 k! U5 k% z' }% k$ V
    $ \5 ]5 v1 {, l

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    / |' a* Q/ q# g- l: [' @https://regex101.com/r/dTixFz/1
    2 O% N/ p4 m4 A! ?- @7 \& D  H+ [' A
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    . J; [0 j# [% s第一次时没有问题& B+ N- e; b- Y& }. o
    4 l  T5 W$ g& Q+ w& q) e: i
      ]9 X" e' m0 l3 s
    第二次时,替换掉了不该替换的内容
    ) x$ I0 R/ u/ l: }& h* x* b# w/ A

    ; t2 F+ O; p) u

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:227 O+ M. k5 m. t3 G' S  g( t: g3 }
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*" _' K1 F& g5 g) @5 T" D) I6 R$ n: }
    替换中输入\1

    2 x6 E. ~7 O$ q6 ]; i谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36
    ) T2 {: s8 h: \( F2 r" n你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
      L, z( D" B5 E$ C第一次时没有问题

    ' F; K; i& C# ]/ xhttps://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑
    ! Q2 G5 R2 T" M1 M8 C
    2 v2 M. a$ z+ Z3 x1 H5 g谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    3 o8 k! o' m8 a; p6 U0 `" a  p
    ; t% \& [7 _) e/ f* W% N; W9 m

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data.
    ! e- a# T5 @5 {! P. a# Jon the other hand, powerful it is, regular expression is overly used in the wrong places.
    # N4 m* h3 B5 U0 j' F; N
    * n2 t8 T2 |' o5 }0 t* NTo solve your problem with awk,
    & G! P: {) C1 g5 W0 Bawk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    ) w7 u! C# v' b& A  e% \: S5 `/ l4 M8 ?8 Z
    suppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.& {: P+ k) I% d7 A8 ^
    I've uploaded a screenshot, but I'm not sure whether it shows correctly.
    1 B# _, [  ]0 Y0 j5 p- E" U+ ?% _$ |/ {6 O( w. z

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50
    . g1 b  j5 D3 K4 ~5 Iawk is one of the best tools, if not the best, to work with tabular data. 3 T  F3 F+ n. M+ h! H* i. V
    on the other hand, powerf ...
    4 g6 j9 A. X2 z& v& w# v7 m
    谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:
    ; J3 x0 O: J/ E# A, d  \; H2 {/ W. Y. {! l9 K$ u% [- |
    \s(\S+)(?=\s)(?<=(.*\s\1){2})
    0 j% `+ b8 x" ^/ ^0 f6 [6 S& z5 i: {
    https://regex101.com/r/ldXeDC/2
    . r  m, B3 w4 C. _8 T1 M% [0 D
    9 e1 P4 M4 l* Q- Y要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:164 F- G* q0 b' R0 @" A
    一qq群友给的答案:1 Y4 f6 s* F; B0 s

    + b9 N+ `4 n9 `( v7 o1 P" d. a\s(\S+)(?=\s)(?

    - a3 [9 k* \8 G1 c: W# d你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑 8 x7 v; p( m; a9 Z
    dongzhi1980 发表于 2019-4-29 15:39
    $ T4 ~2 [+ \+ ?你看自己发的链接了吗,替换前后有何不同?
    % y& j( {' W% W3 s" z4 ~6 J( ]; t
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看0 E7 U8 }- ]- N, @
    / h2 z* x; \7 a+ W+ D( h6 }
    替换后. v& j6 N+ g- F4 e
    1. Chinese 中文 汉语 中国人 华侨 中国人的
      1 z5 ]& m( T: x( |  t# k
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    * a; I/ x3 Y7 J& s
    & }8 c3 A  w: |Edge不支持肯定型逆序环视。regex101会显示 pattern error。. ^) y; Y& B( ?. {* N

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    . S1 O+ f5 f' |* R/ ~: _一qq群友给的答案:, b! X: H( ^8 P5 j( c% @
    4 _3 M. n) ^) |
    \s(\S+)(?=\s)(?

    ' I( b( P4 k( H2 a) F这个例子让我对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
    3 @. T5 g; c4 s: c' Y1 {; X一qq群友给的答案:2 [1 t8 Q( Q" N* G, V! y# E
    ) ]* f0 Z* b$ R/ g  y  @
    \s(\S+)(?=\s)(?
    ( J7 u. y  X# q$ [! G9 l9 f# q
    这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    / e5 B! D' z0 V$ o5 F用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看0 r- h+ Q  r/ c+ ?" f9 @6 S

    / i; f3 u" \  H: S替换后
    ' @7 E6 B2 |4 ]# ]( @
    如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-8 07:45 , Processed in 0.090293 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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