掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1592|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
1 w7 C2 {# x2 n$ o5 U- Y* {3 V, [! x( ]% I: O7 w
要处理内容如下:
$ Q5 j: M/ J: I' g! m1 Q( i
- x1 R: M: m, g9 m5 PChinese 中文 汉语 中国人 中文 华侨 中文 中国人的
& ~% s$ Z1 U. u6 bAmerican 美国人 美国公民 美国人 美国人的 美国的
6 ?8 W1 {% B& c9 N
2 S8 X7 Z% c9 @! j全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!" l, z) ]/ u$ i7 e: g; o4 V" x

: `/ H3 C  Y2 z7 a* e! w
9 u# N- J+ ?! G0 U  t3 T. h4 l! E

本帖被以下淘专辑推荐:

  • 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
    % Z$ J0 P' L, o0 v你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了

    ' ^$ G' |+ {. m8 D9 }' [9 f因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:072 _5 r& w" s" ~
    https://regex101.com/r/dTixFz/1

    * i1 r/ z+ Z" D  A这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑
    / Z1 J& v7 g+ v1 k2 g. |
    / H% p4 C" |/ c! K/ T  g8 |# a谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?
    3 v% N1 L5 e! d4 u- {/ ]4 `5 q8 y, J' y5 O- g! R
      f) ~8 ], O$ ?7 |6 v
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:26
    / }& r) n2 Z5 j* t9 J谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...

      S, b6 B& Q; A+ Z一行最后留一个空格就好了
    3 a# b4 x: [( c% N
    / w6 f5 l9 U9 s8 M* ~5 r  D$ {或者这样也可以% F& b0 t! D- p3 f
    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 编辑 ) l' X9 h7 V% `$ o# m
      t' Z7 v$ O: Z- k
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*0 l' j7 k, c4 w6 h+ O; F& z8 g' h
    替换中输入\16 l) W. |' \7 _. S  X( Y& W

    & h6 ^6 q! g, U1 h: t. P见图,这种是保留英文及一个中文是不是你想要的这种结果?
    ) l/ M" e+ L' O/ {+ Y6 Z1 [' k' l3 {
    $ Z- b% W1 s( r! W& E1 Q4 H! i2 n4 ]) m
    - J; E: g2 V* W% r$ a9 p1 |如果只要第一出现的中文则! F: ^- `: w) y) q
    查找输入^(.*[a-z] )([[:unicode:]].*?) .*# N4 }$ Z* ~1 t, ?( v
    替换中输入\2
    4 o# {3 ~! a% z2 i3 Q; e' H2 [! S9 L7 D  ]
    + V& l4 i- _- g, h0 q, y

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    : [# x- W2 H0 U2 `" Yhttps://regex101.com/r/dTixFz/1

    0 l) [( _: u8 t. Q: `6 s/ S& {你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢) P2 Z& B2 h# ]: _4 C
    第一次时没有问题, l3 S9 `% }% a. E8 p+ e5 z

    % l7 y* K& d! u4 g0 y1 ~
    # B! ~# F9 T% c第二次时,替换掉了不该替换的内容: M7 l: S3 ]# w1 s* f% H0 u

    / [5 y7 Y' {6 R- `  N# |, O6 e% t) ]' C3 p2 y$ |% {

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22
    $ T; p5 J( n1 ^& p用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    ) ^5 i# p: ~$ l  A4 P" }8 M替换中输入\1

    3 z8 k0 X. [4 R! X5 W+ \谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:364 Y& w  ?% V; t. u$ L3 j2 S' a
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢
    ) F: X" m. L) t( d5 ]第一次时没有问题
    / Y# |2 U2 ]9 G' F; o1 J
    https://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑   H" s6 ]) E8 N3 v3 }  v: A

    2 U( z; {' O/ h' o: r谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。% J: T; E7 I2 L) X# K3 g

    4 S/ g4 `7 G% S* h" x

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data. . X" I. r6 t+ E0 t! @
    on the other hand, powerful it is, regular expression is overly used in the wrong places. : K9 M# }8 R% M2 b' S; V% [8 N# F& L
    ; T+ U1 F; t2 I9 h  Q
    To solve your problem with awk,
    / M8 J5 e0 P3 y2 Y+ K; Bawk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt9 ~1 d- F9 s9 V

    # o3 n3 P8 i0 p3 q  Q! rsuppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.
    ) g- o% Q0 c9 I) H2 `I've uploaded a screenshot, but I'm not sure whether it shows correctly.
    / h$ F7 B8 f1 J2 F
    4 }5 `! v/ T$ E: j1 R; M5 s3 j! a

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50
    ( {' C. O: ]7 d( \; d6 Rawk is one of the best tools, if not the best, to work with tabular data. 0 F& I  B) q; Z. p% W
    on the other hand, powerf ...

    6 O* o/ l) h7 a1 `谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:/ _2 |" q6 C1 F* A
    9 ?9 a9 w: H& h) E
    \s(\S+)(?=\s)(?<=(.*\s\1){2})
    ' d7 y) p5 N2 d, @1 d, {5 j, G& H# R. E& G! @6 A
    https://regex101.com/r/ldXeDC/2
    8 z# [+ o' v, x/ L
    + F# |, d6 Y0 o9 n  t7 d7 K6 ?; }要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16# c1 _; W1 N, X$ U+ {2 Q
    一qq群友给的答案:
    3 C5 R. o0 W6 z( I& v4 ]$ m( @2 ]+ n" T2 [/ k3 X' E: N
    \s(\S+)(?=\s)(?

    4 m6 }) B  l1 m, H你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑 + P9 ~1 P$ y' @6 y
    dongzhi1980 发表于 2019-4-29 15:395 e. f% ]' ^4 }+ A" b
    你看自己发的链接了吗,替换前后有何不同?
    ) g4 F4 s1 Q8 z7 s! V9 c" y: ~
    用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看! X4 T- N( w- m6 R4 M
    * `8 d  D; ?* v
    替换后- E* r6 u- j( W: N, x1 F
    1. Chinese 中文 汉语 中国人 华侨 中国人的3 n4 \. O! D9 j" l- g$ B
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    / O+ ~9 V/ C: ^# W: ?5 E/ @
    " b1 |. g0 z) yEdge不支持肯定型逆序环视。regex101会显示 pattern error。: T9 h/ [4 P4 B1 [- s

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16+ n4 e2 c+ F8 c: w
    一qq群友给的答案:/ q2 w4 p& P: w

    : v3 q* T8 @8 u) @" I3 G7 {\s(\S+)(?=\s)(?
    0 L- A2 _2 o/ a) m# _: j- b& \
    这个例子让我对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
    2 Y4 l9 g; Z# e2 O0 Z+ l1 R一qq群友给的答案:
    ( W; C' `" r* z8 G! T: z* E& `/ s4 w* m0 \2 K! U
    \s(\S+)(?=\s)(?
    ! Y  y1 }' W( |9 p+ g
    这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    ; J! ~! n9 u: y用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看/ s6 G9 N& F' c  ^2 Q9 o
    ) G  c: f( Y, K
    替换后
    2 t# i) ^& f7 B, e
    如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-7 04:02 , Processed in 0.085357 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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