掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1569|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
# H  p: I# P: V' J! W
0 G: [( a- a1 b要处理内容如下:+ Y" u2 C* P  d0 `: J% l

& r3 P; T# p1 Q; l4 O9 x2 ?8 hChinese 中文 汉语 中国人 中文 华侨 中文 中国人的! h7 z$ e3 z# @. G* o, X( B, |
American 美国人 美国公民 美国人 美国人的 美国的  L4 S! S4 F$ J! @$ E( ~2 e

) A! c5 n' d. ~* ]5 D& C3 B全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!% G) u7 j7 `/ k8 K6 S
# m) b0 w, ^# j: E, f3 g4 r

  o* U5 [* W6 P

本帖被以下淘专辑推荐:

  • 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! |8 W$ R: i, J1 G1 k
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了
    0 ^( ]: `8 F9 v( u; ~7 ]. u6 l
    因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    ( v, g9 u( U0 B- ]) a. x; Ehttps://regex101.com/r/dTixFz/1

    4 a* W1 W$ V+ d2 Y这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑
    5 g6 w4 R3 {0 U( g; v  V
    7 x- M, N3 W) T3 }7 ]* J, A0 G7 p4 q谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?3 R* H( w! d* C  A2 y: R  ]

    , B: B* n1 x4 H" U, B' X7 n0 m) e7 T, [, H
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26
    , k/ |" K+ D5 u  @% G% }  {5 I谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...
    : `+ a, p* m1 O
    一行最后留一个空格就好了5 x' ?; n) b* {2 q! t: @( L4 Y& C

    ' V1 i& E; a( V  A4 A或者这样也可以1 w& M- D  u# [2 c1 s) k
    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 编辑
    6 O+ e- p- ~, P8 g2 X/ ]
    # |; P: B" {3 |1 F' |- O" u用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*& P) v3 \7 l& `
    替换中输入\12 z8 X0 E. a+ t9 C9 \, _
    3 ?; O0 n' H: y
    见图,这种是保留英文及一个中文是不是你想要的这种结果?5 D% v; ~/ T" M  o

    8 y" D/ y9 ^& c" S4 Z1 m( Q1 `1 w& L2 F% b9 Z) ?6 l, D- b- D
    如果只要第一出现的中文则
    ) Y4 L( `; i( f1 q' g' M查找输入^(.*[a-z] )([[:unicode:]].*?) .*; B7 G- @# C- Y
    替换中输入\20 L0 b5 A/ m1 i- O6 Y

    : O& P# O# s9 o: O8 W9 X; @5 e0 N, {

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07. E& S! w* w6 X; w) b* D
    https://regex101.com/r/dTixFz/1
    / p5 J" B) h! D" P; b
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢5 o/ ?& a3 |! J" s# L2 Q4 I9 t
    第一次时没有问题
    # t. L  D  b4 c4 a! I) Q; z  i' S2 {( K
    5 C- j/ s8 F2 {# Q. b
    第二次时,替换掉了不该替换的内容' f- `! \( F; C& q

    $ [) X& q7 F8 `- w' ]# h) D) E$ g6 [% |6 S

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:225 m2 n7 L1 t" ]2 Z4 a5 x
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    6 ~5 v8 A1 j) j* _5 J+ |/ {- F替换中输入\1
    0 z' ]  }# @4 z9 k, c
    谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36( S0 I4 [# x) [0 s( l( t7 w
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    5 a, Q8 l9 w8 E% k. N% }3 e/ h) m第一次时没有问题

    0 i- N0 K! |" ?' C% R( Ghttps://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑 & @8 ^# }6 s8 [- U9 z; Q0 f
    & G5 d1 `' S6 A2 ~
    谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    / N( q; i5 o0 ^2 t$ X" Q9 t
    ; c! C  ~" R4 m3 w+ i

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data.
    ' J+ P4 Z- [$ E. U0 h2 F) J- Jon the other hand, powerful it is, regular expression is overly used in the wrong places.
    + [5 j7 {( [- v  E+ p
    - d3 v, G* D* G" |To solve your problem with awk,
    5 U* r) J# T- Z; X0 _awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
    2 Q0 Z6 W8 E2 I6 n" |6 w& o( V1 j2 F7 \8 P6 W" g; \9 v6 \! [
    suppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file., v$ z$ Y4 X% P5 l6 i3 D4 X
    I've uploaded a screenshot, but I'm not sure whether it shows correctly.- ^) {9 I1 h! G3 n; q, v

    , ^0 r, |! ]. Y& ^# j

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50
    " X7 V3 u8 Q5 R* @, X! tawk is one of the best tools, if not the best, to work with tabular data. % s" J) e; P1 ?' A8 J, G/ C
    on the other hand, powerf ...

    2 i, N* X/ R8 Z) x2 @: Y9 ?  D0 `谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:
    3 E7 F  |) a. V/ i3 h1 n% ?7 n7 ~  N# N& v
    \s(\S+)(?=\s)(?<=(.*\s\1){2})1 ]) |) @7 n, P) Q

    : {  Q- B4 Z4 v6 n+ [, N* ihttps://regex101.com/r/ldXeDC/28 C) T1 `2 @, X* d4 n
    6 p& x# H3 N9 z0 L& T
    要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    ( H" Q: b3 C# H# m2 k  M* q一qq群友给的答案:6 X) P- G9 g: ~: b& Y- _

    9 ~4 E  `2 p1 ]0 a% e\s(\S+)(?=\s)(?

    & ~4 A3 j; i2 k# D8 z你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑 ' Q# }( ^/ `% m4 t3 P0 ~. m! a
    dongzhi1980 发表于 2019-4-29 15:391 f, i8 l  Y# C# ?/ p8 X+ \
    你看自己发的链接了吗,替换前后有何不同?

    ( R, D# c6 y; n! f; }1 Z0 @5 ~1 y6 Y用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    ' @4 S: X! N2 ~8 n
    ! T* e, Z0 w! H' Y: h" F) `) S4 p替换后
    / B9 g$ X( x! e2 L9 n/ B6 c
    1. Chinese 中文 汉语 中国人 华侨 中国人的1 P8 h' d2 g) j& @) Z
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    / Q! K# L3 e& L% W, i' F- D
    6 n* A1 |3 d2 F0 B" G$ NEdge不支持肯定型逆序环视。regex101会显示 pattern error。1 v7 y6 \( h; t5 g

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    + P; N1 ^" H0 Y% I6 ~0 R+ a一qq群友给的答案:
    % h2 n, w: c7 x  d1 X" F' Z& a+ ]9 R  R4 z
    \s(\S+)(?=\s)(?
    . m6 I2 q0 W6 b5 e; @& |3 v' K1 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
    ) o  Q5 N; r$ {/ h6 W1 |$ y. V一qq群友给的答案:& l  Y1 T4 ]( T3 ^, c; g+ f

    + L# o/ C& J; ~5 u4 S( O\s(\S+)(?=\s)(?

    7 L7 z- u, I6 @! N* m" ~  A/ W这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59( }$ P" |9 u$ m3 {2 I" W
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看+ I6 G# b$ Y. ^  Y6 h6 D
    1 g6 n0 s* F0 t# ]5 \' E
    替换后

    $ c) j6 {( T6 K/ e# @$ C/ S如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

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

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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