掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1593|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
1 n% ~& J/ g. e5 K: V; P! B5 w% R2 R4 S
要处理内容如下:
% g9 @3 n5 ?- ~! s' M1 o9 A- C9 m8 }) G; i  B
Chinese 中文 汉语 中国人 中文 华侨 中文 中国人的- ~$ n. {1 v' b" d! ]
American 美国人 美国公民 美国人 美国人的 美国的
" u* P1 X7 }6 Z' [; X( L, [7 @, \; z; |) Z
全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!8 E. M) m; I- a& s/ N) [6 ^
: G, q! J  }  c9 ?8 z0 I
+ u% q5 }5 \$ _7 E1 t

本帖被以下淘专辑推荐:

  • 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
    ( O+ Q0 e; e1 r. v! H6 Y你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了
    . g1 S: e- s$ c  s9 v
    因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    4 Y- v2 E' k. ^$ o- i# E' ~2 N) j. ]https://regex101.com/r/dTixFz/1
    - N. \0 _7 \5 \4 |% ^
    这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑
    4 o$ W: T) }) \; X/ j$ z: p6 Z
    % P, s+ A6 {: ^7 D  w6 ]7 b谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?  S- q/ }& q% f; F( _

    $ Z: p7 ]5 j# ~; b3 E7 n
    . }2 b9 K5 s7 b) {8 z2 A
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26( Z# Y) f+ X* b1 E
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...
    & m# I- V% M+ S2 y, \5 J
    一行最后留一个空格就好了
    9 K, I, x2 o1 M0 ^' o8 v
    $ C7 ?% b: m& x& ?7 Q8 g或者这样也可以
    0 m2 f# X( Z( Q/ ]* nhttps://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 编辑 6 R4 o( v2 {$ z; T" w
    " }' V- v+ G2 H1 F+ ^4 r/ N( H
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    0 m5 b  `" O4 W+ Y* y1 [* h替换中输入\1, ?+ I1 t; d: b8 o% r) E, S) R
    2 O  Y6 a9 C0 M' T6 s" C
    见图,这种是保留英文及一个中文是不是你想要的这种结果?
    + k: @, a: y3 L  A1 X5 J9 l: L; j  M- g. t* \6 v( ^/ o8 w, `
    * K* U, O+ G# m: W
    如果只要第一出现的中文则
    7 Z; V, D% `# p查找输入^(.*[a-z] )([[:unicode:]].*?) .*
    6 G9 C1 L& g+ Y3 @. S# c0 C% \2 q5 i替换中输入\2: C& ]6 m9 D  m% w) N

    % N1 ~+ O* y2 |+ T) y
    7 ]  m* @6 l7 {  c- }: f- H

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:077 J$ B& z; e* }" e9 V
    https://regex101.com/r/dTixFz/1
    + ~9 ~( C$ J: j5 U2 _4 Z
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢. a' p, N+ q' X' M/ V3 }
    第一次时没有问题" E) x& g* v# \6 Y3 K2 D; f# M& B
    , _( d4 X' T- ]
    2 V8 R5 h+ T, N# z# ?
    第二次时,替换掉了不该替换的内容
    # m# m- O% I% ^- p& G, Z8 a$ N4 B4 `( `7 B9 i  E/ E) P# f) ~) l+ S8 a# o2 b. \+ ]
    6 k9 p9 ^2 a. l9 v

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22
    * \7 D3 W2 ?; k* L  c( f" ]用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    4 a1 L; _- \" K2 k& k0 t1 p替换中输入\1
    1 X5 ~% ?$ W. T) E
    谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:365 f1 J. m9 T; |2 Q: t- L7 n6 o
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    # H% v: I" `9 c2 }4 \) |1 w; C第一次时没有问题
    " ]4 ?2 q* J# f- O8 t
    https://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑 - ?3 q* w& d8 A( j) ^1 o

    " u# E2 f/ Y7 m- D' ]4 D谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。2 X" J6 Q, I% s2 y8 z2 N  K

    # Q) G( i' z+ h4 c

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data. ! z/ i+ b! E: E
    on the other hand, powerful it is, regular expression is overly used in the wrong places.
    ) @/ y8 C8 F' z: i  |+ }0 b1 L  j0 t$ D* I  J1 J2 j7 o
    To solve your problem with awk,+ \0 ]; I9 Q9 V! V) D* g
    awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    2 ?' Q/ t% P: D3 W' r* S7 Z$ E1 ~* ~, I. k7 F4 ~3 E$ S8 [! V
    suppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.
      d- C6 r8 Q& l/ GI've uploaded a screenshot, but I'm not sure whether it shows correctly.
    # c% r' k* p5 q+ T, V! Z  \4 B4 r: q. b+ k, E2 D& ?

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50' h8 l$ {! R! Z6 K! v" O$ s$ j" g& P
    awk is one of the best tools, if not the best, to work with tabular data. , k; o$ l# N$ U) l; c
    on the other hand, powerf ...
    ' _* Z( |( m' @) l
    谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:4 u4 W/ V' x0 o7 d9 D2 l

    % N' N1 B- A& l; w% Q\s(\S+)(?=\s)(?<=(.*\s\1){2})( J5 ~9 _0 t1 b0 v! N

    6 {( y2 Z" `4 X2 W# F# y* bhttps://regex101.com/r/ldXeDC/28 ~5 S2 h' P. S' U

    . F8 b3 `, ~1 M3 P  d. t' s要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    9 _& m9 D& D+ F2 s, N一qq群友给的答案:
    : w7 v1 I9 t8 e9 E
    8 U: `8 N* I5 r: }\s(\S+)(?=\s)(?
      Z+ L0 p0 ~* D$ d- u6 y
    你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑
    ' a( c/ H9 F; I; L9 D
    dongzhi1980 发表于 2019-4-29 15:39
    * r  W+ h0 [& E, C4 m$ N你看自己发的链接了吗,替换前后有何不同?
    - W' h, H- J; U( I$ ]& `+ N
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    " v4 n' ?6 s5 z5 N6 q/ q5 w: F% }9 ~1 E' p$ ]
    替换后
    8 V/ a7 d7 _- j
    1. Chinese 中文 汉语 中国人 华侨 中国人的
        c/ ]) p* [$ h' R$ f3 @
    2. American 美国人 美国公民 美国人的 美国的
    复制代码
    % Q6 B+ j# N0 y* O: h4 |
    5 U6 |8 x; d  f& r% M9 x3 L) ?0 S
    Edge不支持肯定型逆序环视。regex101会显示 pattern error。/ }: s: f* v# t" Y3 B( m+ U

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    + u! i& h5 T2 y6 n% _" a一qq群友给的答案:
    ' Q' l& E5 n$ N- G% K! X6 B6 {1 Q1 U& N! o# m6 V5 J
    \s(\S+)(?=\s)(?

    : t1 o' i2 k7 [2 O7 S这个例子让我对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 @. v2 b/ E' X+ d) {# v
    一qq群友给的答案:5 y' }; i: b; N; c0 V# ]

    4 |5 O& L2 J9 {\s(\S+)(?=\s)(?

    ! t8 x7 J% x. I这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:598 j! B, d, A9 z% C+ z
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看- `4 L1 C- d" K
    0 B2 [# [. n5 V
    替换后
    ' L, e: W8 m0 N$ r
    如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-7 08:26 , Processed in 0.067652 second(s), 17 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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