掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1568|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
; U$ z. T3 j' r3 I& O7 d% m
/ u8 B" }6 q6 E9 b2 E( s0 u  ]要处理内容如下:) [8 i7 g& ~% _% D( g) G1 U( `. O* U
' N/ R. l- ]' c. @
Chinese 中文 汉语 中国人 中文 华侨 中文 中国人的, y  K. B8 U& E5 K" J0 n
American 美国人 美国公民 美国人 美国人的 美国的- u6 N) r% z. g# v$ Z  W; |
- w1 D" u+ F/ [5 C9 C2 k6 H
全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!; R8 G1 u0 `0 H

8 M; y3 I6 i5 {9 ^) b' M- B  j7 B: T0 M3 N" D) K

本帖被以下淘专辑推荐:

  • 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. G3 B% E+ |# n- |  {; S7 x
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了

    8 e; x# v0 @2 O% l: S) v" `+ M因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    % E  H0 F+ S7 e- O1 S6 t5 j  Khttps://regex101.com/r/dTixFz/1
    " L* {3 o* O( w4 [* k
    这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑 # F) D* f, p* Z2 s/ c( y1 @' ?8 i& R
    " e0 v& `. s8 j9 a0 C
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?
    1 K. _' d# d' m% R" N; x! o
    1 `4 d# y7 o5 C% c  G
    & K; G) `2 Q- B5 V- Q* N
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26
    ! k% x2 J0 r1 N( L0 L: x, P谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...
    7 K/ d9 m; K$ S/ s8 }2 b9 N1 C
    一行最后留一个空格就好了  I2 C% s+ S9 \) l0 j4 @
    + J' |& s+ e% N8 l: i' q# c9 L
    或者这样也可以
    5 C, Y; D6 H4 {) Ghttps://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 编辑 1 d) l5 q9 Y2 Z
    4 w- k( C( W! C
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    ! l3 [& f( q5 `) t. y替换中输入\1
    6 U& P( {& W6 c1 z( o
    $ p' R  ]2 f) ^/ s! v0 i, s见图,这种是保留英文及一个中文是不是你想要的这种结果?
    9 V- `  p5 J+ p" a/ Z: _
    & b4 s6 E1 `# m! q' ?" i0 g
    * ?3 V/ k: h7 I1 y1 s如果只要第一出现的中文则
    4 J4 R, U0 @) p0 n! X( j5 T2 ]- y查找输入^(.*[a-z] )([[:unicode:]].*?) .*
    * J7 X% ~6 Z& W  Q替换中输入\2( D) }3 D; N$ r8 z% M' _
    " @' h8 p( O! E) ^& k' n; y
    8 B1 |. L- y) p. R) a! j: q

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:078 ?2 O- z0 ^% p
    https://regex101.com/r/dTixFz/1

    / n3 n5 g; l7 j3 z' ~, o你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    ) H3 u7 ~6 a: `) [8 a( C; b. t第一次时没有问题% I1 M& l, P: L
    ' Y$ C) a, D, N0 I" w/ ^! @: z

    $ ~, a4 N( Z0 k( l5 ?, _, m第二次时,替换掉了不该替换的内容
    2 D8 ^  b2 d; r' B6 @% I: c1 L7 d. f  R0 U$ ?

    4 G, l0 N& g. ]! j; O

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22' y" Q( [/ [, ^- c3 L3 i
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*$ F: g: @! W# O( ]0 z5 X
    替换中输入\1

    + l7 x5 x" q# n% L7 e* R9 P- A; D谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36' H7 x, x- c* {) q- r9 I
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    . _$ {8 I7 d3 G$ ]0 X$ o( F3 |第一次时没有问题
    5 O; W8 U- P9 t+ w: X. V
    https://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑
    8 e+ b( e* L3 j
    . `3 n* B0 `' l% A0 F' U& @# u谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    / t+ I) m$ [( u. t' {7 I" |) z' X0 K3 I6 {% X! R  X; f6 d/ o# ^$ U8 x5 K

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data. " y. |2 o& A3 X! {1 E% ~7 |
    on the other hand, powerful it is, regular expression is overly used in the wrong places.
    4 `- g. q+ [7 @6 g6 U. D' c4 w
    6 f3 V+ A) A# f# p) M! j1 `To solve your problem with awk,$ d* w7 b& x0 g
    awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    ' p/ M8 A( {, u/ c( [
    2 q: D% @  W9 Esuppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.1 S4 i1 ?! f0 [" ^6 m8 c2 o
    I've uploaded a screenshot, but I'm not sure whether it shows correctly.
    # ~% _9 o2 L3 i6 J  ?1 ~+ L6 R9 v! r
    ) r0 z0 p1 J. t, b' ?$ S

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50; g# R9 c, J! g
    awk is one of the best tools, if not the best, to work with tabular data.
    ' J( P' d9 l) {/ k" G% oon the other hand, powerf ...

    1 l' p7 N! I" k1 e7 v谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:! \& b5 G" z2 u3 ^7 V2 B$ k
    8 R" j5 i9 P% ?0 I+ c" ?7 L% p3 z
    \s(\S+)(?=\s)(?<=(.*\s\1){2})6 L% R6 c, t) t- ?0 q( P/ k

    : D3 \' g6 X! H# d3 R2 U5 whttps://regex101.com/r/ldXeDC/2
    " D8 k( w1 f' S* P, s
    . `0 J6 V8 z9 @* d# {要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:165 E& F) [. q& N6 F, v  P
    一qq群友给的答案:
    % x  Z# }- a9 _
    7 o- p; S) ^9 D" m  l* y\s(\S+)(?=\s)(?

    9 w* M, P$ O; ~/ U# \( a( Y你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑   v# d% b3 [4 _4 t( @
    dongzhi1980 发表于 2019-4-29 15:39; U2 E% N! W% g9 {. K+ R
    你看自己发的链接了吗,替换前后有何不同?
      Z. W9 b$ d# y. K: `1 ]  {+ q
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看3 a& B7 q; V; X+ f

    7 Q9 s, W$ A$ ^- F替换后' C& e- ?' r  w
    1. Chinese 中文 汉语 中国人 华侨 中国人的
      + N% Y% b4 D  x. p" f8 \
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    ( u* X+ g' G* l. @: v- ?+ }0 V. e7 }" x$ x5 V3 l9 l
    Edge不支持肯定型逆序环视。regex101会显示 pattern error。, p7 ?* N6 _" I+ g# o- d: P

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16) y3 O; [0 ~) X/ R5 i2 {0 j
    一qq群友给的答案:- ]- n+ t3 c9 f' d: c, _  h

    4 k7 |+ \  H4 ~  {\s(\S+)(?=\s)(?

    ; v2 Z& O' @2 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
      |# J+ Q- d& z! W) X; i一qq群友给的答案:/ r: r7 J& O3 w5 }

    * ~6 ^9 O, E0 h: C( t7 c! h3 t\s(\S+)(?=\s)(?
      w0 z. ?5 P% b
    这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    - T- V/ W  Q( o& m用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    ' ?( }8 T' S' f+ N! ?% O! J; C& [7 ^7 ]& U8 Q
    替换后
    # m- ~6 p" b3 L) A- s9 b' D
    如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

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

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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