掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1570|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
; c' B8 \! u) `9 h* d7 I% Y4 |: I' z9 x6 F0 ?% I0 ?6 B5 d$ V
要处理内容如下:, b5 y; L1 N) ?+ U
  W/ i  S, O4 c: L/ T! g( o
Chinese 中文 汉语 中国人 中文 华侨 中文 中国人的
0 O- `2 \3 D8 i: r& V7 L0 t" W  yAmerican 美国人 美国公民 美国人 美国人的 美国的
, m# ?8 F4 b' ^  |/ v  I
) g6 [* s! ^3 [8 ^: h, E9 p7 V) W全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!
* c$ [9 {( q2 K5 |( r# [- ]1 P2 @% I$ H/ d; w, j

" U* r7 @+ K' ?5 {, _! j" l

本帖被以下淘专辑推荐:

  • 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' ~; Q5 S* r# Q0 x* x0 \+ y2 R
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了
    + u# @' d/ R. V  \; L- ~1 S3 e
    因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    + p, @& T! d! Phttps://regex101.com/r/dTixFz/1
    " I+ y4 q1 ~; e; T' k1 l
    这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑
    : R, @# R' P6 r3 V4 v1 n% S  J" W7 ~+ A; \# p' L; K
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?$ ~5 w$ ]8 ]. ?* P
    8 h+ x" ^1 z; Y6 u6 L9 C4 u- I" L
    / j8 b9 Z: W6 _; j7 J, u( p4 J- {
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26- t' [* s" T  `! ?
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...
    ) T1 F: i, R) ~2 j! Z9 f3 @
    一行最后留一个空格就好了; E3 f& z: ~7 w
    4 Y4 J: r+ L" u) {
    或者这样也可以* d: X0 {% t4 x0 R
    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 编辑
    5 Z2 i6 f! e: l( Y1 L1 }1 k+ S* j4 M" G# T9 u5 D% k  f# A# U
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*, G$ m" r& N) D# [0 B
    替换中输入\1" V; t" ]6 d$ G" z$ R' n( G
    6 J$ h: P  q9 T
    见图,这种是保留英文及一个中文是不是你想要的这种结果?
    # V& y) B9 ~' e# A8 E: b% b- ^. z
    & h1 w8 F* ^; G+ F! s" [1 h: T1 Q$ y9 s8 A- ~
    如果只要第一出现的中文则
    4 z8 a" t4 y2 I" p1 }查找输入^(.*[a-z] )([[:unicode:]].*?) .*
    $ X" p8 H6 U6 R. u1 B替换中输入\29 N2 n, I, \. T

    - e! E9 x7 T' U( D( v  W) T8 p$ a, F- g+ m! O4 {

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:076 L- E4 b+ c6 p2 I. I
    https://regex101.com/r/dTixFz/1

    6 B/ n4 T  e0 p) B7 a你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢2 e+ h" i+ f7 I
    第一次时没有问题- M# d& |, ~0 I( }

      {' K5 T$ ^/ P- S! U% A" C9 V0 |: v) V! [; F6 t
    第二次时,替换掉了不该替换的内容/ `+ n- h; i  O+ B. c. o
    % z% Q' B# @* Y5 ~1 x
    % J# P' o! _  m6 s( ?/ [* _$ f

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22$ d; b; J3 h, t: Y+ J; Q
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*" {) J& e% E! E
    替换中输入\1

      o( G3 T5 ]6 d$ O" @6 D谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36% ~4 S3 P( R' i$ }
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢- ?1 ~- j& x; f9 l4 Z/ P7 r
    第一次时没有问题

    $ B: S) x' Y: O( d0 K# Phttps://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑
    ; w' ^7 N0 S8 j$ o$ M' s7 F* K- l+ f. d( L
    谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。2 N8 v4 X2 `5 l& m8 B9 t1 n4 i

    : o; h3 R' z. s* K1 `  N/ s

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data.
    7 H/ q% U8 C* \/ t6 w5 Q: Uon the other hand, powerful it is, regular expression is overly used in the wrong places.
    ( O! O$ T1 `1 k# r5 n: `6 ~8 P2 ?' g# M
    To solve your problem with awk,
    7 x3 q+ r; Y& s. p  A$ ^' Tawk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    " o) n/ ~! |8 b3 H' |. A* Q; u) \" j9 D( W3 ~* ^
    suppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.
    9 R( _% c) {) p+ wI've uploaded a screenshot, but I'm not sure whether it shows correctly.
    * u, @' l# b- N) {+ _: j$ S, w) _" b3 @8 I3 H6 d" B

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:505 S+ g8 p- e0 d6 e! y( i" W0 G
    awk is one of the best tools, if not the best, to work with tabular data.
    + ^( F8 y+ ^3 `7 |- x, R% U. U4 }on the other hand, powerf ...

    + V. R9 M( N" J% o/ k' A7 |谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:: J( g4 `2 @3 b  I) Y# K
    7 @( }- V, M, E0 N5 ]
    \s(\S+)(?=\s)(?<=(.*\s\1){2})$ \# Y) a' n+ S- S5 [, T

    , {5 E) `$ H0 J, A7 K. l; g1 dhttps://regex101.com/r/ldXeDC/2( W! C; D4 K+ J& V

    " j% W) w3 m9 \8 M. ]2 D要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    3 A4 E' W& @$ O! I/ Y一qq群友给的答案:
    ; g, p. J' M# e# m3 x' M2 d( w2 ]: |
      |" \; X& C, R1 f( J( i\s(\S+)(?=\s)(?
    ) w5 S4 _; x' O9 M: X
    你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑 ' i& g% A  ^0 ~( H$ D% h1 s
    dongzhi1980 发表于 2019-4-29 15:39, f% O2 N0 y+ b% l) s/ a; ^
    你看自己发的链接了吗,替换前后有何不同?
    : y( \; y# {0 O3 E$ x' J7 I0 a- `  h
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看( i: N. F2 V9 c" ~) V
    ! s( y. L6 R$ b2 p( n5 \7 s
    替换后
    ' d6 n0 U/ I3 F& c& r
    1. Chinese 中文 汉语 中国人 华侨 中国人的
      / P2 H/ J5 \$ j' R, h
    2. American 美国人 美国公民 美国人的 美国的
    复制代码
    4 R# U  `3 c3 Y7 e
    6 o9 g7 \! v/ v5 H% ]) L" B
    Edge不支持肯定型逆序环视。regex101会显示 pattern error。; M3 e1 T5 ~, c

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    ( c% P- b! B# M" W8 M一qq群友给的答案:0 Z1 M9 E5 C; T: t; ]6 e: `
    3 c6 @3 r  k, o9 x, I4 [+ h" B- }
    \s(\S+)(?=\s)(?

    $ E4 @; T2 N. V: [% j2 E这个例子让我对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
    9 E8 J  L5 Q# B8 W( D, _; ^一qq群友给的答案:
    5 B7 m- J0 `" f( A1 C+ V: U- L* ~! N- V
    \s(\S+)(?=\s)(?
    # o3 W. c! h8 e( ?8 @2 l6 E: q* X
    这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    # m. x- j7 l8 \! f$ w) T用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    % B  g+ i/ l. D5 O, t
    7 C$ O& m# b( X2 Y& Y. f8 c) [替换后

    ; \; ]. w2 s, {如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

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

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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