掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1602|回复: 21

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

[复制链接]

该用户从未签到

发表于 2019-4-26 14:52:39 | 显示全部楼层 |阅读模式
本帖最后由 dongzhi1980 于 2019-4-26 14:56 编辑
3 Y' m9 e1 k$ x3 P& p8 E3 R
8 {4 R1 ?6 `2 b& Z; T要处理内容如下:
& B) ~3 z% q/ x9 m4 y4 r
* K% t* Y. V! M) c  sChinese 中文 汉语 中国人 中文 华侨 中文 中国人的
  j. r/ h. P$ e# e3 L' rAmerican 美国人 美国公民 美国人 美国人的 美国的
4 R# S+ |$ F+ j( P9 F4 @0 o, ^( C3 Z6 u
全文不一一列举,请问,如何用正则处理第一行使结果中只保留第一个“中文”,其他不变,第二行类似,只保留第一个“美国人”而其他不变。烦请解释处理的过程。谢谢!
) T' \- z* j4 D
' ~) f# T6 q. l7 s& S5 ~
' F5 V" \/ l" N% g$ |( O

本帖被以下淘专辑推荐:

  • 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:012 c) E2 p' y7 ~9 U4 v
    你可以直接贴进excel,用空格分隔,然后删掉右边的数据就好了
    - s7 O9 _* S/ F* U+ M2 @
    因为文件较大,右侧重复的数据又不是相邻的单元格,各行长度不一,所以,不知道在Excel中如何处理,能详细些吗?
  • TA的每日心情
    奋斗
    2021-9-28 10:33
  • 签到天数: 314 天

    [LV.8]以坛为家I

    发表于 2019-4-26 15:20:29 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
    1 d0 T" a8 ?- {* v( x" W' }. jhttps://regex101.com/r/dTixFz/1

    ( n+ ^9 V/ [! E3 f" F/ A/ z这是个好东西。

    该用户从未签到

     楼主| 发表于 2019-4-26 15:26:43 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-26 15:53 编辑 3 C' T/ R- F# M$ X0 k; Z! w2 a  E
    ' o& a6 `1 a3 J& [& i/ a$ N
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去重?
    8 x3 E' J# g/ D9 j, t
    0 e, c, {9 D' K  }% u9 n5 G9 W! \. B! T7 B1 b% ]% u
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-26 15:55:01 | 显示全部楼层
    dongzhi1980 发表于 2019-4-26 15:262 W$ i7 h/ `& Z6 v; r1 v
    谢谢你。你链接的程序应该能处理,请问为什么我粘贴进去的(或者在里面直接写进去)的重复内容不能自动去 ...

    + W. X/ S. k9 D  ?9 d+ j7 P一行最后留一个空格就好了
    ! e& c" O& ~" l9 R( Y
    2 l- d5 v6 u$ N) q或者这样也可以0 g9 t6 d% q6 E; w% \' p) j0 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 编辑
    9 i% Z: J+ T/ I( o( S" [2 c3 O5 D# L6 w
    用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*
    1 E3 j; T, d" u7 V: ~8 g: p, ?) O替换中输入\1; _4 y2 A* V5 Q* p

    ( s* ]/ c& x: F1 p" G3 |1 C# ]见图,这种是保留英文及一个中文是不是你想要的这种结果?
    : `* }5 s+ A1 S
    & ~" T, ]8 g* i) R2 L" u* o3 J5 w2 C( z5 r) R
    如果只要第一出现的中文则" L1 j, A# J! i; q
    查找输入^(.*[a-z] )([[:unicode:]].*?) .*
    4 {7 ]; u" H' s9 |+ V替换中输入\2
    3 n9 t& d" Y+ s7 U1 p+ g+ F: c- o. G- @' N$ j
    9 D9 @' N' f3 ]# b  |

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:36:27 | 显示全部楼层
    jonah_w 发表于 2019-4-26 15:07
      G' ~( R: i& lhttps://regex101.com/r/dTixFz/1
    8 x9 J; o- }, U; [
    你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢( W, |+ k/ I" w
    第一次时没有问题
    , x" ^- W3 N+ {# x  c& e! `1 S' p
    5 B% B5 T: X( ^! P( ]# H! W- g; c* K$ f! [6 N2 b$ _, d; U: r& |1 m2 {
    第二次时,替换掉了不该替换的内容
    . o' @" \/ j/ z( L" j4 C- O/ B# c5 ^# c2 h# u3 @, |( i  a- g3 F

    / V; [  F& g" j5 U9 P

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-27 10:39:39 | 显示全部楼层
    y8888 发表于 2019-4-26 22:22
    ( W" p9 P5 n' w; E9 R用Em查找输入 ^(.*[a-z] [[:unicode:]].*?) .*8 i* @9 M# L3 ?
    替换中输入\1
    % `/ B, u. v, K; c6 h- J
    谢谢你,我想要的是“对于重复出现的项,只保留第一次出现的一项,其他内容不变“。可能是我没表达清楚,不好意思。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-4-27 10:40:12 | 显示全部楼层
    dongzhi1980 发表于 2019-4-27 10:36
    9 _/ S: e# X8 n你好,你的答案还能再完善一下吗,第二次替换时有点问题,谢谢3 F& V+ H, o/ P: w! H$ x: f
    第一次时没有问题

    - j2 N/ r/ Z6 b& ]- uhttps://regex101.com/r/dTixFz/6

    该用户从未签到

     楼主| 发表于 2019-4-27 10:47:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-4-27 10:54 编辑 " U, O- Y$ e* v. Z. r
    8 i- }& H2 T5 B6 n* d/ N
    谢谢,闪电般的答复。经验证,你的正则可以移植到Emeditor里,效果更好。
    4 }+ ^& V' }% G: D1 ^. ^) ]
    5 @" ~; ]9 l4 B' C6 o+ P

    该用户从未签到

    发表于 2019-4-27 22:50:58 | 显示全部楼层
    awk is one of the best tools, if not the best, to work with tabular data. ) g0 Q: p* i- o  H+ ]1 u0 @/ \& D
    on the other hand, powerful it is, regular expression is overly used in the wrong places.
    - J9 u. n+ P. X8 ]& D: g8 m+ t; C& t4 P3 ]% @' `
    To solve your problem with awk,& b1 T' t7 u3 G  y" w. R, V, n
    awk '{for(i=3; i<=NF; i++) if($i==$2) $i = "" } { print }' 2nd-col.txt > 2nd-cleaned.txt
      c8 P" b" d4 m( A. M; [3 Q! {0 e7 r3 a  v! V1 |( ]
    suppose 2nd-col.txt is your original file and 2nd-cleaned.txt is your cleaned file.
    - P4 g- j( }7 m6 wI've uploaded a screenshot, but I'm not sure whether it shows correctly.
    7 ~# l- i: K- h% J
    8 k! {- s( f" y; H+ N( p

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2019-4-28 08:00:32 | 显示全部楼层
    csw016 发表于 2019-4-27 22:50
    , q6 ], Z7 e9 m+ ?awk is one of the best tools, if not the best, to work with tabular data.
    . T* N- K: K  f9 w8 b- @1 T# X: ~on the other hand, powerf ...

    ' P9 e, z! M- U. E. G谢谢你,感觉为了一个功能应用去学一门语言有点过了。
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 10:16:50 | 显示全部楼层
    一qq群友给的答案:
    5 H# u# h  Y( A+ a/ A; _/ W
    & I8 @1 X& B( u! U\s(\S+)(?=\s)(?<=(.*\s\1){2})
    $ Q* U) B3 k& V+ ~' w+ v! `! r5 ^
    6 z" b( h6 g9 g5 m' jhttps://regex101.com/r/ldXeDC/2
    % h4 @; r- e! s# G$ D) N, s
    ) m1 |" Y% Q' n1 M& K要求支持肯定型逆序环视,Javascript正则引擎支持肯定型逆序环视,python, php,perl的t正则引擎貌似都不支持肯定型逆序环视, notepad++、emeditor大致也不会支持肯定型逆序环视, eeditpad有可能支持肯定型逆序环视,没试过

    评分

    1

    查看全部评分

    该用户从未签到

     楼主| 发表于 2019-4-29 15:39:31 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    8 A5 N0 ]( ^) L. P. e一qq群友给的答案:
    ' o% s5 ~8 n+ F; p; i. T7 Y' T) h5 U( I) Q; M& g7 w8 b
    \s(\S+)(?=\s)(?
    * M& c& g0 o+ i0 q" R
    你看自己发的链接了吗,替换前后有何不同?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2019-4-29 16:59:36 | 显示全部楼层
    本帖最后由 mikeee 于 2019-4-29 17:07 编辑
    & D# T+ x9 o1 \7 y  Z
    dongzhi1980 发表于 2019-4-29 15:39
    ) p  t0 W8 x# O3 ~5 i9 J% b; l1 J你看自己发的链接了吗,替换前后有何不同?

    7 `8 Y2 h6 b% w: N# Q# ~用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    4 X( [/ q% @( x  I3 {
    , e* B/ O. K8 G8 ~替换后: ~8 n) z% m! j3 B
    1. Chinese 中文 汉语 中国人 华侨 中国人的; O& l/ z$ ?  s  r6 H7 {. z
    2. American 美国人 美国公民 美国人的 美国的
    复制代码

    & F0 ^5 U  o" @/ |+ F" e: y" _3 y1 R
    Edge不支持肯定型逆序环视。regex101会显示 pattern error。1 S8 K; @4 `# E' `; s9 @

    评分

    1

    查看全部评分

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

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:47:42 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:16
    ! s1 G% n- @, h) O% X& }0 m+ r6 N一qq群友给的答案:5 q& I2 c# m* O' H$ k+ N3 ?, ]
    + j! T9 {0 ?' \9 ]
    \s(\S+)(?=\s)(?
    * d( N# C, G# G8 q9 j! @9 [! ^
    这个例子让我对regex look around有了更进一步的理解,前一阵子学习的时候就这一部分理解有问题,太感谢您和这位群友了!
  • TA的每日心情
    开心
    2019-6-23 00:02
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2019-4-29 17:54:13 | 显示全部楼层
    mikeee 发表于 2019-4-29 10:162 c7 K# t8 @, E5 X' B9 M' O* {6 E2 x
    一qq群友给的答案:
    $ o# }! V9 h. r' L, z' E# q
    1 h+ v4 [/ p1 h$ G' u\s(\S+)(?=\s)(?

    + v) E6 \, |6 `, s: K, a6 q& [这个简直是regex look around的经典范例啊,越看越觉得写的太好了,收藏了!

    该用户从未签到

     楼主| 发表于 2019-4-29 21:46:25 | 显示全部楼层
    mikeee 发表于 2019-4-29 16:59
    9 w2 i2 C- g2 T7 j用 Chrome 打开 https://regex101.com/r/ldXeDC/2 看看
    $ p+ L) @9 b* R: p' T6 c! w2 m6 J4 L- U
    替换后

    7 r' P" u; o5 j& ^+ ~9 V如你所说,一次成型,牛,Chorme下通过,Firefox失效
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-15 10:14 , Processed in 0.098487 second(s), 17 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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