掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2885|回复: 55

[求助] 正则表达式请教

[复制链接]
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2018-12-25 14:43:56 | 显示全部楼层 |阅读模式
    本帖最后由 jonah_w 于 2018-12-25 14:47 编辑
    / k. W, w6 x+ d1 b5 o. @0 s1 I2 d# A3 U  X# }
    在制作Mac词典的过程碰到一个问题,就是有的词典的词条释义里用波浪线 ~ 代替了词条本身,我想重新用真正的词条替换掉波浪线 ~,不知道有什么好办法。: g/ _7 h, v  E6 E/ x

    * k, z8 Y  f( f/ X; m: g& o词条内容的格式是类似这样的:
    & ]! e! `' G3 }& k( O* z
    1. <d:entry id="_38ja" d:title="xxx">
      / @3 W# h9 O" @5 k! v
    2. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
      ! G* q: w* P6 V1 n2 z' P
    3. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
        X8 F3 @- A5 A& S9 v
    4. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>! I  R" y% S# D+ k) {
    5. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>
      9 T6 t3 m9 N7 F4 e# d1 J) C- b
    6. </d:entry>
    复制代码

    0 T* S  l2 }! D  a# |需要将每个entry里的 ~ 对应替换为当前词条entry 的 title值。
    / @2 @% G/ J  c! Q* t不知道可以通过正则表达式实现吗,或者是否有更好的方法实现这个。
    # h- T! j  l+ C+ a$ Z% ]. S6 f3 D4 f) w+ n8 q

    7 R% q3 O: G# R' c& s这个是已经制作的Mac词典专辑。3 r, `! T2 v/ y# v& Y8 d: H( |& R# S
    https://www.pdawiki.com/forum/fo ... ction=view&ctid=428: r" r1 i' M6 Y# w" N

    ; e$ {3 x& R8 E) z+ ?如果问题解决,愿意赠送任一指定的Mac词典(公开的或者未公开的)。
      e2 c4 [# F4 i先行谢谢了。. h! m- ^; h$ q

    7 ]! ~5 V, c1 U0 H3 d' I
    2 D8 x, f$ \9 L9 D0 ]5 v* x1 z0 E7 o$ x
    ( }3 h5 z! v8 s
    7 z! K$ j4 O1 ?; a" p# o# f
  • TA的每日心情
    无聊
    2019-1-1 20:10
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2018-12-26 10:02:26 | 显示全部楼层
    这问题用 XPath 可以不用这么烧脑,用正则表达式则是把简单事情复杂化了,附 python 程序实现,依赖 lxml 库。
    & ]3 m- |8 l( \, d# O$ [2 ~4 i

    1. 7 D  D) R, z1 s+ t% v
    2. #!/usr/bin/env python28 g+ W3 p  c" Y3 j, E7 U' N* G
    3. # -*- coding: utf-8 -*-
      * Y  `; r; h) W+ X2 _3 I1 W8 ^" J
    4. """
      + n6 e1 Q7 Q; }$ v5 E4 d
    5. File: replace_tilde_with_title.py
      9 \3 ^0 d4 K$ L. |* x
    6. Author: zzhirong
      % z% O: E  I, y8 p8 k) e$ \
    7. Email: [email protected]
        m: D& q! H' m
    8. Description: 替换 span 下的 ~ 为 d:entry 的 d:title 属性
      , o$ a, ^( K9 u# N. @
    9. """7 I; i; K5 ]* f8 m2 J7 s9 a

    10. " r; K( ]% ~. h! f3 }2 Z8 x2 b$ G
    11. from lxml import etree/ M+ Z+ A% E, V. I( @  M% {2 `

    12. % n  A/ t) y0 V' W  w- ]
    13. s = """<?xml version="1.0" encoding="UTF-8"?>
      ) M; ]; v1 e$ F2 T0 P8 R: z6 T7 A/ u
    14. <d:dictionary xmlns="http://www.w3.org/1999/xml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">6 Y+ G' n% ~0 b
    15. <d:entry id="_38ja" d:title="xxx">7 ]8 |# M, r+ {  ^) y( L/ {" v6 ~
    16. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>  r; y/ B) `8 o* Q
    17. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
      4 S( h8 w' v6 L& l
    18. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
      ( Q3 N# ^6 F1 M" p  \, D7 F. t
    19. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>. J1 F' Q; I% A: Z* x, n' m
    20. </d:entry>
      ) i9 C( q+ s8 g& t, ]8 K' B
    21. </d:dictionary>
      6 V, A! Z2 ?( b( ~# Z; t9 j1 s
    22. """7 {8 d7 Z2 ]2 ?0 L8 O9 g8 d
    23. . S9 {! {% ]" [, c7 K$ |
    24. xml = etree.XML(s)
      6 L% i! e  P$ t" q% }) D2 U
    25. D_NS = xml.nsmap["d"]
      : E9 V! \' D8 l/ j/ X. S
    26. XML_NS = xml.nsmap[None]
      4 o6 n" N4 g3 ]( E' `
    27. ) ?* n- F7 V+ X# k* \6 U, J% j. A
    28. for entry in xml.xpath("//d:entry", namespaces={"d": xml.nsmap["d"]}):
      " i( ?# x' p; b$ x, V
    29.     title = entry.get("{%s}title" % D_NS, "")0 b4 ?6 b3 B6 s; i4 k( I( |
    30.     for span in entry.iterfind("./{%s}span" % XML_NS):/ X. ^) z2 m0 b( b
    31.         span.text = span.text.replace("~", title)1 R5 j1 _/ z. f
    32. print(etree.tostring(xml))
      ' J9 n! W% }0 ?7 w# U. z1 W
    复制代码

    * G; F9 J4 Y0 p* i$ ]! m

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    发表于 2018-12-26 06:37:07 | 显示全部楼层
    本帖最后由 VimVim 于 2018-12-26 11:59 编辑 # d( H) _$ K5 S" X
    jonah_w 发表于 2018-12-26 00:04
    1 U1 n- v8 ?: t. k是正则的宏处理吗? 可不可以直接说下正则的思路,然后我试试在其他编辑器写出来,对vim尤其是宏这块完全 ...
    ( R9 H% Q+ i. e' N9 g8 |1 N+ t
    1、正则的思路二楼已经说的很清楚了,这里再补充一点详细信息:1 U) R; F+ S& S" e& b4 o

    7 s' H  Z( Y" [. X
    8 k7 o. K3 z% _0 }- c  ], p我只是照这个思路根据你的词典结构具体实现,并采用vim的替换功能,以及宏命令重复运行该替换操作。2 O! ]' h4 |/ q- q2 j

    ( G2 i/ k0 l3 B7 V5 z7 `) @2、你只要:help usr_10即可获得关于本解决方案所需要的Vim基础知识
    ( L( q6 |, k2 R. B' H' h2 P$ K
    . H  Z& t1 |& {2 A! f/ U3、补充方案一的具体思路:
    & o, _2 s8 F3 @2 |' x* E4 f$2h:定位光标到词条定义中' G) n% O/ V* N$ |( i$ ~/ U
    "tyi":将词条复制进寄存器t(寓意title)
    ! o! l1 r2 B* M8 ~1 r, q' |# Bvit:选中当前位置所在标签所包围的内容$ t5 _1 H9 X' |. p+ F' Q
    :s/\~/^Rt/g:在上述选区范围内进行搜索替换,将所有的~替换为寄存器t中的title内容(其中^R是指Ctrl+r,并非简单字符)
    ! w  t' a. V9 E- {0 i/ j/<d:entry:搜索定位到下一个词条起始位置
    % p  G' |5 z4 K最后将上述指令放入寄存器中,并用宏命令@重复执行该寄存器的所有指令。
    ; s4 M- J4 O" j7 u; Y- k+ {1 R1 f9 j& i' y* r
    % l+ H' b  `  u1 E

    3 {4 K& {" f7 w/ d# ^* ]* {: Y) ?; o2 b+ `% d

    1 ?7 N' F; B" K. D3 P
    & _6 m. b5 F& _2 ?5 C

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2019-1-12 12:25:55 | 显示全部楼层
    本帖最后由 jonah_w 于 2019-1-12 12:27 编辑
    # Y8 p, j( G0 r, t1 w: l8 Z6 d
    anyid999 发表于 2018-12-25 17:41* L9 ~- J7 R0 H% G4 w: b! D5 j
    新建个文件夹:
    % U, k' l3 l9 H) E4 A4 d把附件解压放入,
    7 g. ?) }9 P0 M- t9 x) ?将你的要修改的txt文件, 更名为 inp ...
    / t, ^  r" L- @0 A0 z8 m4 P- q
    今天刚试了下这个脚本,发现有错误:
    / J0 Q% s; i+ P" t
    1. Hello World!
      : \* Z; \( a  }6 Y
    2. panic: runtime error: index out of range
      ' A  f3 [" ~/ l4 X, I  @' \  Y6 V- ^" U

    3. " r4 h7 r8 x. X, C5 K/ \/ O; X
    4. goroutine 1 [running]:
      * g  |' d- g' v! G5 b/ ^- r: q% T
    5. main.aEreplace(0xc0000a6a11, 0x10, 0x290, 0x0)6 a( @) w& o; {7 c8 {
    6.         D:/Xspace/Xmen/re.go:27 +0xed
      0 p$ A$ ^' |% t
    7. main.main()
      $ x/ N+ p" s0 K+ S0 E
    8.         D:/Xspace/Xmen/re.go:20 +0x20f
    复制代码
    : l* a7 w2 D  D! U# C
    6 G, ~! N/ ?) J* `2 Y7 u3 p. N7 W6 [
    不知道是不是我机器的问题。& P7 p* z; u$ D0 S

    0 s: {; E# L. ~* }4 Y7 O1 D这是input.txt内容:(更新一个附件:)$ G$ \* p! T  y- H
    1. <?xml version="1.0" encoding="UTF-8"?><d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">% C4 T  d! @/ n, F- k. Y
    2.     <d:entry id="_2udw" d:title="roughshod"><d:index d:value="roughshod" d:title="roughshod"/><span class="hw">roughshod</span><br/><span class="tag3">a.</span><br/><span class="table"><span class="num">1.</span><span class="tag4"></span><span class="tag1">(马匹)</span>钉有防滑蹄铁的</span><span class="table"><span class="num">2.</span>残暴的;残忍的;无情的:</span><span class="ex">a tyrant's ~ rule </span><span class="ex_c">暴君的残暴统治</span><hr class="hr_1"/>ride ~ over / 残暴地<span class="tag1">(或盛气凌人地)</span>对待;对…横行霸道;对…不予同情:<br/><span class="ex">ride ~ over the people </span><span class="ex_c">骑在人民头上作威作福</span><span class="ex">ride ~ over the rights of the children </span><span class="ex_c">践踏儿童的权利</span><span class="ex">ride ~ over sb.'s feelings </span><span class="ex_c">伤害某人的感情</span><span class="ex">The boss rode ~ over the men when they asked for higher wages. </span><span class="ex_c">工人们要求加薪,老板不予理睬。</span></d:entry>6 a% @7 X: N' O1 F" }" L; L/ U0 u$ v5 E
    3.     <d:entry id="_2u05" d:title="rookie"><d:index d:value="rookie" d:title="rookie"/><span class="hw">rookie</span><br/><span class="tag3">n.</span><br/><span class="tag4"></span><br/><span class="table"><span class="num">1.</span>新兵;生手,新手:</span><span class="ex">a police ~ </span><span class="ex_c">警察新手</span><span class="ex">a ~ star </span><span class="ex_c">新星</span><span class="table"><span class="num">2.</span><span class="tag1">(第一年参加联赛的职业球队的)</span>新队员,新秀</span><span class="tag2"><br/>[词典校勘] <br/></span> <span>rookie现在通用翻译为“新秀”。 另外,括号中说法有歧义。</span></d:entry>( y8 H5 V+ x8 r3 o$ {$ p
    4.     <d:entry id="_owh" d:title="copybook"> <d:index d:value="copybook" d:title="copybook"/><span class="hw">copybook</span><br/> <span class="roma">Ⅰ</span> <span class="tag3">n.</span><br/> <span class="table"><span class="num">1.</span><span class="tag1">(附有规范供模仿的)</span>习字簿; 描红簿</span> <span class="table"><span class="num">2.</span><span class="tag1">(文件、信件、账目等的)</span>副本合订本, 副未册</span> <span class="roma">Ⅱ</span> <span class="tag3">a.</span><br/> <span class="table"><span class="num">1.</span>老一套的, 平庸的:</span> <span class="ex">a ~ maxim </span></d:entry> </d:dictionary>
    复制代码

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    郁闷
    2018-5-17 09:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-12-25 14:50:07 | 显示全部楼层
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找不到为止。) Y( r+ O, g4 d! U4 a' C
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 14:59:33 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    % ?! Z% Z; k, T- B* J这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    ) z$ V$ N2 x2 k% W2 E* Z
    这个词典词条不是一行,一个<span> 一行… 可能一个词条里有很多个<span>
    % Y, K- E8 `6 c# C! r" S' q8 V' W5 @然后 ~ 可能有多个… 上面那个正则可以匹配到多个 ~ 吗?
    $ K6 m. ^  m/ y: S0 P5 g+ e: I$ ~! m- r; J1 U% j. c6 s
    不过我先改成几个词条成一行,然后试试这个正则。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:10:04 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    ; R: [9 o% z0 D. u+ ]4 x8 ?! ^; f这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    ) p* ]" B& P7 P! U. J9 j7 m$ N/ c好像不可以,没有匹配到内容! o; E4 C: N  Q5 ~* N; s

    # L( T4 s. X" A$ z; \) a- k7 Q- I8 D# \/ x) M% Q
  • TA的每日心情
    开心
    2020-2-19 01:15
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2018-12-25 15:19:37 | 显示全部楼层
    一个替换~的小工具
    / g0 I. E6 y6 q. rhttps://www.pdawiki.com/forum/fo ... hread&tid=29088
    7 b% H, @7 {! F- Q2 L- W1 G+ o) M(出处: 掌上百科 - PDAWIKI)
    % J( I: i6 I7 F% z
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:29:15 | 显示全部楼层
    dfsfd 发表于 2018-12-25 15:19
    6 s0 o2 k9 D9 Y3 E; K一个替换~的小工具
    & L3 ~% E$ x& ^7 i9 O# Ghttps://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=29088/ z5 v  Y) R, v9 v7 D
    (出处: 掌上百科 - ...

    6 u# I$ |5 A  n8 P5 }' y7 W0 F% W6 {我等下翻出我那台老Windows试试,感谢dfsfd提供信息
      M$ z1 J: l7 j1 O5 U
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:37:03 | 显示全部楼层
    我天, ~ 还分全角半角…1 K# e. K( m1 v, W

    / {, ~5 E5 g- N- m
    . B" @' y3 b0 p! i我再重新试试…
  • TA的每日心情

    2023-10-6 09:46
  • 签到天数: 1382 天

    [LV.10]以坛为家III

    发表于 2018-12-25 15:50:52 | 显示全部楼层
    jonah_w 发表于 2018-12-25 14:59
    ) p4 U7 X) e( |: T" {) K* i8 r这个词典词条不是一行,一个 一行… 可能一个词条里有很多个
    6 ?5 \! @( }4 V然后 ~ 可能有多个… 上面那个正则可以匹配 ...
    3 J4 u$ a$ {& z+ a" H
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行& [2 x* ^2 M( l2 g* i# {* c& n
    多个~也没关系,可以执行多次查找替换; ]  X2 `! ~: Y8 k2 s
    全角半角~也没关系,用[~~]就好
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:55:54 | 显示全部楼层
    niusmth 发表于 2018-12-25 15:50
    # }+ G$ F6 E5 _; n不是一行没关系,有的正则表达式引擎支持.也匹配回车换行9 q- X5 E2 }. x, y0 F
    多个~也没关系,可以执行多次查找替换5 `! _$ N) d9 C  r) Y+ @& {
    全角半角 ...

    9 Z6 s& I" ~& V# e* u, r1 B  [多行容易 这个entry的title匹配到下个entry的~去了… 很烦的
  • TA的每日心情

    2019-11-22 21:06
  • 签到天数: 133 天

    [LV.7]常住居民III

    发表于 2018-12-25 16:14:59 | 显示全部楼层
    这种情况, 写个替换程序最佳应用场景...
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 16:15:52 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    9 W0 K; j6 d# H  Q这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    + V1 a, f& S0 i& P. n; K刚才 ~ 的半角全角弄错了… 又试了一下以后,发现这个正则可以匹配最后一个 ~2 F- [, J: B. P1 w% M
    多次执行替换可能最终可以解决。感谢y大这个思路,很赞。5 e' N/ o' j8 d; g% d
    下一步就是将所有词条放在一行去。
    * d. K. [3 F" |; d/ ~0 U
    ; l4 e5 V4 W2 h; j( D( j不知道有没有可以一次性匹配entry下所有~的方法。
    - a5 ~4 f4 Q: t$ i: O  c+ }; V6 Y/ O3 W) z& s. L- y
    , ?" K2 d1 _1 h; t1 W
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 16:20:14 | 显示全部楼层
    anyid999 发表于 2018-12-25 16:14
    - q4 |" @/ n" f# t8 j这种情况, 写个替换程序最佳应用场景...

    # a3 _, ^; W. N自己写个程序? 最想通过一个通用的正则一步到位的解决,目前看… 难
  • TA的每日心情

    2023-10-6 09:46
  • 签到天数: 1382 天

    [LV.10]以坛为家III

    发表于 2018-12-25 17:08:20 | 显示全部楼层
    jonah_w 发表于 2018-12-25 15:55
    : d3 y# q6 \" q, U- J多行容易 这个entry的title匹配到下个entry的~去了… 很烦的
    2 s8 a! x- l4 V8 F9 k
    别用贪婪模式啊2 q7 c0 v  w, A, C, C
    在</d:entry>前结束
  • TA的每日心情

    2019-11-22 21:06
  • 签到天数: 133 天

    [LV.7]常住居民III

    发表于 2018-12-25 17:22:26 | 显示全部楼层
    本帖最后由 anyid999 于 2018-12-25 17:25 编辑
    ) R# o$ \8 l5 F+ h
    / s9 [& _4 A4 ?# T! t7 g  {新建个文件夹:
    - B; U* Y7 L8 K; Y1 Y3 Q把附件解压(re.exe)放入, # e+ h- D; Z& f' P! T9 L
    将你的要修改的txt文件, 更名为 input.txt,放入: k5 V, Y! Z3 ~' I6 e5 ^$ O. j
    1 A+ J  e4 \- @
    运行re.exe! o# h1 v" \0 l( N4 T  I

    - X* z5 I% Y+ l! P. I* M有问题问我.
    8 s  C' d6 _$ F: _

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:22:28 | 显示全部楼层
    niusmth 发表于 2018-12-25 17:08
    # w2 d/ i' H+ Y- v别用贪婪模式啊; h, Z2 X9 n7 D; ]/ F. Q7 _9 [
    在前结束

    4 E  |  F4 V- X% f; C没用贪婪模式,因为下一个词条也有 </d:entry>
    , ^$ Z$ m5 L; ~; K如果这个词条没有 ~ 就会匹配到下一个词条,不管用不用贪婪模式
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:27:37 | 显示全部楼层
    anyid999 发表于 2018-12-25 17:22; v$ o$ \1 [1 [* k% U
    新建个文件夹:
    ! t) F! D9 F; _  g: L把附件解压(re.exe)放入, * a. ]; k! y! u+ _( I, I
    将你的要修改的txt文件, 更名为 input.txt,放入
      Q6 p0 O8 r; j5 B, }
    我目前是mac环境,优先看看能不能在Mac上搞,不能再换吃灰的老windows…
    & E* K& Y: w$ f' x6 U: q% x1 F% H1 k7 }  N9 S2 l
    感谢提供资源。
  • TA的每日心情

    2019-11-22 21:06
  • 签到天数: 133 天

    [LV.7]常住居民III

    发表于 2018-12-25 17:41:38 | 显示全部楼层
    新建个文件夹:8 V- A$ _9 c/ W* ?* J; ^& t4 D2 n
    把附件解压放入,
    , ^; m; q0 z/ k! o% f将你的要修改的txt文件, 更名为 input.txt,放入: I; t9 D( `- T+ h6 X, D- b
    8 z5 J# o9 O3 z0 p/ @
    运行
    ( v6 d  b  [) |% H" F6 b$ [$ d6 G& e2 L6 r( ~" n0 F8 O
    有问题问我.
    5 k+ Q3 {& h7 K0 Q5 q
    % @- W0 d# n( B8 _: G

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    难过
    2023-3-29 23:08
  • 签到天数: 98 天

    [LV.6]常住居民II

    发表于 2018-12-25 17:52:00 | 显示全部楼层
    感觉上,这不是应该正则处理的事情,先读 xml ,然后一个词条一个词条读取,用替换就可以了。
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    发表于 2018-12-25 17:54:45 | 显示全部楼层
    本帖最后由 VimVim 于 2018-12-25 18:11 编辑
    ) p- g# D; j4 c/ x( n2 Q! v( F7 e3 p, Q; u7 s
    给你两个解决方案,均已测试通过!
    * W" J9 `- e/ G7 u9 k  y
    $ T" ]. e. s+ c, e
    3 F- m; H& X5 v- b" A, w9 U0 v# F; B9 w# z' n" w1 |7 @/ _, R
    附件:上述截图用到的测试文件及Vim命令。9 K( d* X5 Q0 v# f. g
    前提:会简单使用Vim0 _( r# U8 W. Q. Z3 M" m

    1 Z! w) s; U$ ~+ t1 o- F: h% i7 D; [5 y+ v, x: o: p" h1 k& [
    . l+ k  M; o3 N! _

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 760 天

    [LV.10]以坛为家III

    发表于 2018-12-25 19:46:47 | 显示全部楼层
    jonah_w 发表于 2018-12-25 06:37# v. Y: V1 D3 e- `
    我天, ~ 还分全角半角…: C1 i+ I. y) p1 Y9 s. C4 j
    " i' D  T. c% @1 V6 p, G  i/ m% m
    我的软件不行吗?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:55:01 | 显示全部楼层
    在尝试大家提供的各种方案中… 有些门槛好高,边摸索边学习7 m& b- E; u5 U1 \9 w. g
    0 i9 j- R7 s7 `4 {8 Q% D

    % B; _  N/ U! U/ M' J4 y9 N非常感谢大家提供的方案。至少得弄通一个…4 B1 \( k; x( r9 R; Q+ k: j5 i# G
    4 m; V+ u" Q0 {+ k# Q/ f( d1 m3 _
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:58:50 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46
    8 l3 f4 {+ X% }) y  a我的软件不行吗?

    6 w3 K; E1 a5 i& f, `& P1 t各种方案一会儿都试试。
    ( R, Y3 {$ w8 q2 ?感谢孤影大提供的工具。后面我都会反馈下哒。
  • TA的每日心情
    开心
    2019-5-28 07:39
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 2018-12-25 20:03:52 | 显示全部楼层
    本帖最后由 leescott 于 2018-12-25 20:15 编辑
    2 ~7 ?" v7 h4 @: _
    . b( h9 l  S2 m/ q4 h5 P这种情况下,我喜欢用cnbook。1 u2 d$ T: t: g7 R2 S% ]% u( r7 z) x
    复制原件到新建文本里面,替换\n为空。再把<d:entry替换为\n<d:entry,就成了一行。
    2 g8 T: ~) o2 M3 s0 y正则表达式替换那个词。比如,(\<d\:entry id\=\")(.*)(ja\" d\:title\=\")(.*)(\"\>\<d\:index)(.*)~(.*)$替换为\1\2\3\4\5\6\4\7同一个正则表达式,多点几次。直到文件没有那个符号(搜索不到为止)。; S6 s7 q! g& c( \
    最后,把该转行的地方,如第二步替换。6 R' T. ?9 `5 U; G* C! h' E
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:10:16 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46! {3 ^+ P" ?+ k& E( F( p! I! a+ O+ O0 J2 J
    我的软件不行吗?

    2 u. h" q/ H  S1 C之前想要处理日汉双解词典里的全角“〜”有问题。  {) b3 Y& |! v9 c) \
    不知是不是这个全角是日文特别符号?
    * w+ c; m$ h6 ~# ^, T) z' s4 ~, h也许可以让使用者自行贴上要替代的符号会更好用些。
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 760 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:11:34 | 显示全部楼层
    oversky 发表于 2018-12-25 11:100 w( M2 I0 a! p& w" W6 l
    之前想要处理日汉双解词典里的全角“〜”有问题。, u/ J- M7 K2 G) A
    不知是不是这个全角是日文特别符号?( m' j( d1 u5 s& R5 M9 K
    也许可以让使用者 ...
    * k6 O, `2 l" B4 I$ s. X7 J
    软件项目文件丢失了,不过你可以通过编辑器把全角的~替换成半角的~
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-9 12:07 , Processed in 0.071422 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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