掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1540|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
4 g! @1 o$ f, C. B) E3 a' L* r
6 @1 o7 W1 H: L  I) K7 z1 A要处理内容如下:) h. s$ D6 p7 z

/ K1 Y4 z( u- y6 fChinese 中文 汉语 中国人 中文 华侨 中文 中国人的% S0 s; }& f. k2 F: {8 n6 E" |
American 美国人 美国公民 美国人 美国人的 美国的
4 J# I+ l) K' p; K6 {
& Y0 x; a! t. O' T全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!3 ^8 D0 r+ T+ J3 Z

1 x" T. Q- J9 I1 N  m* w/ e0 g- m2 p: a% y2 D+ Z, w

本帖被以下淘专辑推荐:

  • 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
    7 u2 {/ D. W( d, a  e你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了
    . t: C- ?9 G. J5 |8 {$ \
    因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    5 B0 K7 }* n5 y& a3 d( X, uhttps://regex101.com/r/dTixFz/1

    1 M6 G. W0 G6 [. c; u6 w这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑
    1 H7 k% P5 f9 W. j
    2 e+ u5 V& f, O3 b: l谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?: B( r& _  i) ?

    1 f. V) H9 e' {4 U$ U3 @( N/ O& P; F$ n
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26- k( ~- J; G& ^3 m6 k
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...
    ( O" |, ~/ s( O7 d* e. k  ]' {
    一行最后留一个空格就好了
    & Z  v/ Z5 q5 X8 s
    : N1 w; R. A' O! k- \; h6 {或者这样也可以
    8 y, T* l2 d. A5 P0 s! n9 R0 X1 v: khttps://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 编辑 ( C( F* g/ W3 R3 S
    # Z  P+ l' j) d/ [' G
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*$ U( [# _% n# T2 W5 j
    替换中输入\12 d  w7 W0 V' \: T' Q! g' Q4 J! \
      B3 s- Z- f7 J3 z( W9 G5 {
    见图,这种是保留英文及一个中文是不是你想要的这种结果?' ~# P" e# [2 }1 [

    ( t  p% H  G* g. r8 y. {/ V& G" g+ m$ }) u+ Q( l/ x0 @
    如果只要第一出现的中文则
    + U* k2 k/ p# _, r: i查找输入^(.*[a-z] )([[:unicode:]].*?) .*5 A) O7 t: {# @: X" w9 L9 ?. m
    替换中输入\2$ s, l' U3 E& R; @: f* v7 B
    8 {- r2 Y; G# _. E) n/ z- @

    1 @3 y5 l( S  {) ?% n  }& w

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07( F2 J# S+ L' P8 [3 B$ p+ ]( ^3 v
    https://regex101.com/r/dTixFz/1
    2 Q+ G% \. ?! c" a% i4 V
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢/ C, B5 i- C& \- A
    第一次时没有问题$ h$ L: h3 \5 F& F( P
    ; S4 m+ e) J# h9 y/ Q6 }9 R" R

    : Z4 r" Q/ Y) u% J2 f0 t第二次时,替换掉了不该替换的内容  h. a" a( f. ^

    0 R% x  c0 i6 l! N9 g" d1 \% g' \! D; ~! O$ I! T8 {

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22. l3 u, H) h7 H, @& H2 ^
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    0 q0 x+ c  `. ]! v7 d: L/ G  |$ S替换中输入\1

    , X7 O. U3 `% S2 `3 {# b谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36% }; r. j/ R! V. M3 ]
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    ( Y* i* @5 x$ N  N, Q6 J第一次时没有问题
    0 H, _7 B- ~0 Y# r4 B: f1 }
    https://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑
    0 ^4 r) A# T4 J  P
    / R. b2 I9 Y% d谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    4 m9 q) p) e$ v# m  G' j7 K6 @. \& a: ?0 c$ t3 _& j* [

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data.
    9 v& {1 i$ c2 d: b9 U1 mon the other hand, powerful it is, regular expression is overly used in the wrong places. ) o/ o# ^0 `, Q$ @$ H5 ]

    ; I# O" P1 S" |2 @) j# @To solve your problem with awk,2 k) A+ O; ~9 c4 E
    awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt9 P! S) X. E0 c2 A' D

    6 \( p0 R& f# Jsuppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.. I& \+ A4 }: L; b* k( L
    I've uploaded a screenshot, but I'm not sure whether it shows correctly.
    ' X; K( H, s9 c$ `0 c2 {- }
    8 I9 O9 Q3 R% {% |: R

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50
      U% p' `7 W9 b. Uawk is one of the best tools, if not the best, to work with tabular data. 6 }, ^' V' Z: M2 H9 s( D7 O' d
    on the other hand, powerf ...
    9 @3 g6 y/ d1 ?( W7 d
    谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:7 Y! L- t$ s, n1 n# z2 u

    , y0 c4 d1 {6 J$ ]0 Q\s(\S+)(?=\s)(?<=(.*\s\1){2})! c  x' Q( ~9 b2 O8 z! g5 p0 B
    $ F& `3 ?8 s/ V, i9 W0 @' t
    https://regex101.com/r/ldXeDC/26 }3 S+ [2 B9 f0 W9 `3 U4 k) U9 H
    3 z+ W3 g& E8 |
    要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:164 r5 ?$ \# s+ g* z1 t% F; q
    一qq群友给的答案:7 I- {1 k! \; F; W
    5 y% M& s- q3 U' T' t/ w
    \s(\S+)(?=\s)(?

    * q. C) v1 H" o( z9 Y你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑 7 \. k! P9 r' u$ H4 N4 S9 V
    dongzhi1980 发表于 2019-4-29 15:39, h6 b; d# ]2 B6 {
    你看自己发的链接了吗,替换前后有何不同?

    ; p! v# u( |  J7 x& g. r' E: X用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    3 B: g& [% `& z2 k& q7 w4 Z4 M: @- I
    2 {7 F6 ?( G5 f  o替换后
    4 l5 `" u" z, d$ u
    1. Chinese 中文 汉语 中国人 华侨 中国人的
      3 v0 N, S0 g$ a7 H' y3 V3 T: [+ }
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    0 m: f' ?3 @+ X8 ?# u2 R! C7 Z; ^' W& H# B# \4 d5 p
    Edge不支持肯定型逆序环视。regex101会显示 pattern error。
    ; }6 s/ U: T& D) k- C1 v3 V

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    * V3 U) ]: r5 ?( J' I9 H6 m一qq群友给的答案:: e# |) Y. k" u) C( u, L) K6 |. a

    1 l3 c; _- m+ K0 p\s(\S+)(?=\s)(?
    5 k3 K2 a/ W" l4 C7 v6 M  n9 M7 i
    这个例子让我对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
    5 b( |4 b4 ?" Z* o: @5 B一qq群友给的答案:" w8 S& t) H% \9 {, j" F

    - P! K8 c# N# g/ B\s(\S+)(?=\s)(?

    4 ~. q/ ]* g# C这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    7 y, m7 X% C$ C3 g4 V用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看2 q( L7 K8 g- w/ p$ }5 b
    % O+ A6 ?0 |5 U$ Q  K* z) ?( q8 H
    替换后

    4 i# j( |# m, t如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-30 20:03 , Processed in 0.111439 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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