掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3704|回复: 55

[求助] 正则表达式请教

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

    [LV.6]常住居民II

    发表于 2018-12-25 14:43:56 | 显示全部楼层 |阅读模式
    本帖最后由 jonah_w 于 2018-12-25 14:47 编辑
    / Y* Z+ G% g9 a5 H+ ~3 P1 C* I' D2 {: d- N2 Y0 u& {0 c0 I
    在制作Mac词典的过程碰到一个问题,就是有的词典的词条释义里用波浪线 ~ 代替了词条本身,我想重新用真正的词条替换掉波浪线 ~,不知道有什么好办法。
    5 E$ T$ A: L% I  W- k8 S1 `
    . ~; ^; U, C, Q; p+ k词条内容的格式是类似这样的:, e- G- K# m9 K4 C$ c
    1. <d:entry id="_38ja" d:title="xxx">, _  F! r/ \& v4 b! s
    2. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>1 Q' i/ c! f& ^+ I! k) ]6 g4 r
    3. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>  _  z+ ?8 \. o2 r2 D8 ]
    4. <span class="ex">~ a kiss </span><span class="ex_c">测试</span># V1 y$ S/ b8 v
    5. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>, s+ v. X2 X0 h3 W5 S0 U% K3 p
    6. </d:entry>
    复制代码
    0 S% {' d* U* N  B4 R5 `- R8 @+ n
    需要将每个entry里的 ~ 对应替换为当前词条entry 的 title值。
    : v* B7 R' h8 m& S( B& j不知道可以通过正则表达式实现吗,或者是否有更好的方法实现这个。
    " y  A. a; M' T5 k, |) i
    + ]) g6 x# e$ W+ i& b
    6 x# E. f7 s: p9 I这个是已经制作的Mac词典专辑。
    2 g: z4 e9 R, n7 D, q7 |1 Q, ]https://www.pdawiki.com/forum/fo ... ction=view&ctid=428/ `7 Z! E( w# k$ q8 M& G! Y! w; M* i" S

    7 `6 w" P4 P  {3 D! n  B" a& p如果问题解决,愿意赠送任一指定的Mac词典(公开的或者未公开的)。  ~2 w/ _( o' A
    先行谢谢了。
    1 z( _) I1 x7 b) n( z3 B2 R% W
    ) }5 f7 S0 s8 M( o2 J. C& b  m; G
    * D3 I1 z" [& [; _* x
    . M. I& A: z$ A  f: o) h/ @5 E% q" G2 @# a- s

    0 o% F/ u9 f& U4 E, J
  • TA的每日心情
    无聊
    2019-1-1 20:10
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2018-12-26 10:02:26 | 显示全部楼层
    这问题用 XPath 可以不用这么烧脑,用正则表达式则是把简单事情复杂化了,附 python 程序实现,依赖 lxml 库。
    3 F3 o7 e. h$ L$ i8 ~
    1. * H+ U# t; D0 H3 C
    2. #!/usr/bin/env python2
        U" z5 @3 j# ^8 x  o; q
    3. # -*- coding: utf-8 -*-0 @) R3 M0 s' o: J+ Y
    4. """; O" S, o& x. m' p* Q# L6 s5 }4 U
    5. File: replace_tilde_with_title.py
      % [! B- |" U# A4 m
    6. Author: zzhirong8 x+ w9 h6 ]% G" A( o
    7. Email: [email protected]" x/ y& O& w9 j. K) y3 ]
    8. Description: 替换 span 下的 ~ 为 d:entry 的 d:title 属性3 R8 w% U5 b5 n* ], n7 c
    9. """# g( w6 {. y  i/ |7 L% j) y
    10. : ~( U7 U2 K; w) |4 g8 f* ^/ `. S
    11. from lxml import etree
      . x5 i+ }$ u- q! n

    12. ! X4 S  m; i2 A% c. O; i7 ?! B
    13. s = """<?xml version="1.0" encoding="UTF-8"?>1 a5 [: B1 o/ n- h
    14. <d:dictionary xmlns="http://www.w3.org/1999/xml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">% T! x0 ^4 q- E/ G' V$ W; s
    15. <d:entry id="_38ja" d:title="xxx">
      : o5 V- ^8 {9 c
    16. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
      - \/ N. B" P5 v' X( X( Q0 i$ `
    17. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
      % G  X' w8 ?" t# _4 g2 M
    18. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>8 |2 j( t+ }$ T4 G1 h/ r
    19. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>
      % c% |3 f4 ?* O7 s8 J  X" ^+ p
    20. </d:entry>: m3 j) Z$ P. N, X' E
    21. </d:dictionary>  R6 f% C6 a* x6 x2 \2 V1 \- k6 Q
    22. """/ Y% L2 T8 p& T3 D

    23. 7 C& u$ ^: P+ C( i" I1 ]
    24. xml = etree.XML(s)
      ' X! y4 I8 E) k
    25. D_NS = xml.nsmap["d"]  g, M, H; B& X) b
    26. XML_NS = xml.nsmap[None]7 x5 Q# ]- N  y9 [+ W
    27. , h* o3 T( N7 F& W& E
    28. for entry in xml.xpath("//d:entry", namespaces={"d": xml.nsmap["d"]}):
      : r6 a, o! h4 e! D+ H  \
    29.     title = entry.get("{%s}title" % D_NS, "")
      . h2 Y; H5 l9 W7 b9 H
    30.     for span in entry.iterfind("./{%s}span" % XML_NS):4 Z( `6 ^3 o9 k7 Y4 Z
    31.         span.text = span.text.replace("~", title)4 `2 ?8 C/ Z4 E% W
    32. print(etree.tostring(xml))
      $ U0 z* y4 h& u2 g" B5 b! j
    复制代码
    1 j; }% e. E' ^! T5 g

    本帖子中包含更多资源

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

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

    [LV.7]常住居民III

    发表于 2018-12-26 06:37:07 | 显示全部楼层
    本帖最后由 VimVim 于 2018-12-26 11:59 编辑
    " c4 ?1 A4 e1 u0 [! d  V9 B% o
    jonah_w 发表于 2018-12-26 00:04
    0 z$ n8 V7 E3 b是正则的宏处理吗? 可不可以直接说下正则的思路,然后我试试在其他编辑器写出来,对vim尤其是宏这块完全 ...
    8 @& m0 `) |3 l8 E9 A
    1、正则的思路二楼已经说的很清楚了,这里再补充一点详细信息:; ^# v% }# u! x3 M- W  {
    ; X; r1 D" C) j' w
    % `" b! J+ @8 R- B2 a
    我只是照这个思路根据你的词典结构具体实现,并采用vim的替换功能,以及宏命令重复运行该替换操作。$ s/ S8 L' v2 x5 j1 E; |

    8 e7 H# k, h, |' E. Q- j+ K2、你只要:help usr_10即可获得关于本解决方案所需要的Vim基础知识. s. H! H/ ~+ `9 U1 w+ D
    5 g4 r* A6 G0 S6 }' g2 i
    3、补充方案一的具体思路:% l5 ~6 ^4 D, `. ^% v
    $2h:定位光标到词条定义中
    : k5 [3 a: {# Q9 q  s' J; _5 s9 `3 R"tyi":将词条复制进寄存器t(寓意title)
    2 _5 b' l. ?4 [5 \vit:选中当前位置所在标签所包围的内容
    4 L3 j2 N: F6 U" C- X& N# Q:s/\~/^Rt/g:在上述选区范围内进行搜索替换,将所有的~替换为寄存器t中的title内容(其中^R是指Ctrl+r,并非简单字符)
    0 y6 r, s# L. m% g/<d:entry:搜索定位到下一个词条起始位置2 c, [9 y" t  V5 ~, p) l3 M
    最后将上述指令放入寄存器中,并用宏命令@重复执行该寄存器的所有指令。$ \' F/ h: W3 g  p% |; q
    5 o1 n3 e. O* F: B6 v# p9 i

    9 P& e/ p* W+ I) q2 k( w6 d6 S
    ! j3 d! F- r5 G: U5 q+ L3 |* m) q+ H" R9 ?$ f" C7 j2 }& \1 L

    3 v. e* G+ @9 i7 m9 K9 E$ U3 U5 R( ^$ Q8 j7 @/ r( {5 Q) g

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2019-1-12 12:25:55 | 显示全部楼层
    本帖最后由 jonah_w 于 2019-1-12 12:27 编辑 & L) i2 f' y( `" b$ }- m
    anyid999 发表于 2018-12-25 17:419 P+ a0 y  D+ X' g
    新建个文件夹:
    . q. X2 H7 ?6 {' v把附件解压放入,
    2 k. ?4 \8 J4 n" x将你的要修改的txt文件, 更名为 inp ...
    8 U, l* O3 P; X8 v4 N$ m
    今天刚试了下这个脚本,发现有错误:+ a, e, f8 N% R8 u& b
    1. Hello World!
      0 d$ B' c. z6 U7 J0 A
    2. panic: runtime error: index out of range! f6 s3 |  p9 C2 J

    3. - f5 b5 t* v0 l6 W/ X" ~1 ?
    4. goroutine 1 [running]:
      ! }+ ?% S- Y  A( u
    5. main.aEreplace(0xc0000a6a11, 0x10, 0x290, 0x0)
      . ~9 W  U: G$ l+ f) N0 `- l: g
    6.         D:/Xspace/Xmen/re.go:27 +0xed
      0 ?/ ^! U7 E4 y  D3 b4 y
    7. main.main()
      ! R. p" i+ D3 _# Y8 }
    8.         D:/Xspace/Xmen/re.go:20 +0x20f
    复制代码

    . N- H/ p- J, t
    . Y) h# i/ L1 j# J不知道是不是我机器的问题。3 Z. [8 e5 u$ N! N
    ' p1 x  }+ }0 B  P6 b' V0 Z
    这是input.txt内容:(更新一个附件:)
    ) c0 @+ P$ c( p( X3 I! V8 h+ A
    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">/ X% [+ J& m# H- f0 f0 i
    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>
      : [- d) h: Y, Q0 [3 x" g
    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>% w" W. @2 [% Q. }+ O. D
    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  一直替换到找不到为止。
    & J8 h6 ~! Y0 _& ?. [" _
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 14:59:33 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    4 q6 Z! j% E4 Z% X这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    2 o/ Q$ y* ^/ g8 q  H6 C
    这个词典词条不是一行,一个<span> 一行… 可能一个词条里有很多个<span>4 F2 H) T, y! e  F6 g3 D& z
    然后 ~ 可能有多个… 上面那个正则可以匹配到多个 ~ 吗?
    ; m& u1 X6 [: r2 V" R6 i, G1 A3 G, p; I% B1 m
    不过我先改成几个词条成一行,然后试试这个正则。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:10:04 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50  o+ j) @& t3 K3 H# q; `2 P8 j9 w
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    1 {" U- B. ?7 w* c( T好像不可以,没有匹配到内容& o% T1 }" Z+ V: p% O/ a1 c

    8 V- X9 e4 K3 x" W, I$ A9 K! E3 M( t: J* }
  • TA的每日心情
    开心
    2020-2-19 01:15
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2018-12-25 15:19:37 | 显示全部楼层
    一个替换~的小工具
    " h5 r# @9 ?) c. a7 ahttps://www.pdawiki.com/forum/fo ... hread&tid=29088
    8 S4 E) E1 ^/ G7 i(出处: 掌上百科 - PDAWIKI)
    1 v' r+ A1 k% w- `! U5 b
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:29:15 | 显示全部楼层
    dfsfd 发表于 2018-12-25 15:19; R! i: b% H8 k
    一个替换~的小工具
    + A5 k8 D  p2 {; Qhttps://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=29088
    ; m; ^9 s5 t0 I3 {' E. C9 w9 L(出处: 掌上百科 - ...
    / a9 Q1 s# r1 z& ^
    我等下翻出我那台老Windows试试,感谢dfsfd提供信息8 r! y2 w" `" b2 C, c; K9 N
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:37:03 | 显示全部楼层
    我天, ~ 还分全角半角…# n3 Y/ G& k6 h' ~7 f- p

    ! q% F8 @+ \6 Q. b; b; `
    + q' l* t8 C* @0 l3 U我再重新试试…
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 15:50:52 | 显示全部楼层
    jonah_w 发表于 2018-12-25 14:59$ e- g* ~6 K" b! g3 i* B1 @
    这个词典词条不是一行,一个 一行… 可能一个词条里有很多个" d5 [& \! B. G: ]; i# x7 s, w
    然后 ~ 可能有多个… 上面那个正则可以匹配 ...
    7 l: l! y- `: h5 a* e( M7 U
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    6 N& V: `1 _; W# a8 W) R$ m多个~也没关系,可以执行多次查找替换
    . o7 O7 q% S7 _7 H+ X! |/ r全角半角~也没关系,用[~~]就好
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:55:54 | 显示全部楼层
    niusmth 发表于 2018-12-25 15:500 o( ^( f& A5 U
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    4 a, Q( ~' L/ V# g" C# A- _7 r多个~也没关系,可以执行多次查找替换
    9 \" _9 x" V6 A) a6 R' u9 i) Y全角半角 ...

    : f$ v% Q7 {" f, r! ^4 b, i# G多行容易 这个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
    8 f  [9 ]( L0 \0 U5 Z1 G$ X  t3 m* B) G这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    ) {# ~7 u2 A5 Y2 o, B$ [/ h: X
    刚才 ~ 的半角全角弄错了… 又试了一下以后,发现这个正则可以匹配最后一个 ~
    * J7 R8 J" B, p% L多次执行替换可能最终可以解决。感谢y大这个思路,很赞。7 h# H% L8 K1 {( }/ n
    下一步就是将所有词条放在一行去。. b8 Y: u" @; K) Z- X$ S# K# |
    - L8 ?! c3 I! t2 P
    不知道有没有可以一次性匹配entry下所有~的方法。
    6 X7 f/ D) _0 \1 [: q# _
    + E$ `0 c# _! ^( M! S) C: V& B" U1 @6 d. Y
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 16:20:14 | 显示全部楼层
    anyid999 发表于 2018-12-25 16:14
    % [! j9 `; O0 a% z7 P) C这种情况, 写个替换程序最佳应用场景...

    ( j0 x4 y3 ~! |自己写个程序? 最想通过一个通用的正则一步到位的解决,目前看… 难
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 17:08:20 | 显示全部楼层
    jonah_w 发表于 2018-12-25 15:55! B5 L0 }' O2 c9 f
    多行容易 这个entry的title匹配到下个entry的~去了… 很烦的

    5 O  t7 l- H# F+ p$ Z0 u$ \别用贪婪模式啊
    ) i" H/ H1 J7 e5 D, L! V在</d:entry>前结束
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:22:26 | 显示全部楼层
    本帖最后由 anyid999 于 2018-12-25 17:25 编辑
    ( \. W( L) t- U8 x, g# D+ m; R, p9 k
    新建个文件夹:
    / D. ]6 P* Z: p把附件解压(re.exe)放入, & X" ?6 ?0 k5 r" p
    将你的要修改的txt文件, 更名为 input.txt,放入
      v, ^2 z! \, g0 D5 a, s- O4 M( m. a2 Q3 X4 [  _3 p; Q# y
    运行re.exe  H4 z8 a% b7 \( ?

    ' I" y7 [( f* Y有问题问我.
    3 U0 t; I3 Y+ F& \

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:22:28 | 显示全部楼层
    niusmth 发表于 2018-12-25 17:08: K- d5 a7 b+ w+ J: W8 A' G
    别用贪婪模式啊7 H' G3 M* V* f" m
    在前结束
    ) k$ t+ n2 J; c" s8 h4 d
    没用贪婪模式,因为下一个词条也有 </d:entry>& j; G2 p+ M% D8 s0 `1 g; |- T7 L7 T
    如果这个词条没有 ~ 就会匹配到下一个词条,不管用不用贪婪模式
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:27:37 | 显示全部楼层
    anyid999 发表于 2018-12-25 17:22
    ) w9 Z: ]+ s, e新建个文件夹:( n$ d: ?0 t8 P& Z3 ]! u
    把附件解压(re.exe)放入,
    - @# w3 O' y, _0 a4 h9 l1 A; |将你的要修改的txt文件, 更名为 input.txt,放入

    9 Y7 [& ~! e$ w我目前是mac环境,优先看看能不能在Mac上搞,不能再换吃灰的老windows…
    # d5 y" y  F- a* h, P2 f& `& ?% Y5 M1 ~# w/ ?1 Y
    感谢提供资源。
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:41:38 | 显示全部楼层
    新建个文件夹:
    # ]& X, J0 R' G3 n+ p8 Z3 p% ^( V把附件解压放入,
    ) d2 ^' I& `3 o$ R将你的要修改的txt文件, 更名为 input.txt,放入
    , `0 r+ S; k( a1 w; Z$ G( Y2 u% c+ y! r3 D  ?: z0 q- T( N
    运行, _5 _4 Y" ?0 b9 x& V

    * D$ d  U/ R- ?, f有问题问我.5 f. q6 E0 ?5 N- @/ k9 i

      S7 o2 n" z  d1 p+ s# y0 I, e

    本帖子中包含更多资源

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

    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 编辑
    6 b4 i  ^/ P: t; o" `4 [  K% d8 F% j  h0 j- A+ }0 v1 i0 u
    给你两个解决方案,均已测试通过!! B: P; Q4 ^- G

    ! M' z( _1 F3 _: J* b# F2 l
    / v6 J7 e. [4 H" q4 \- k5 U0 I+ ^8 W: }: g* s
    附件:上述截图用到的测试文件及Vim命令。7 `* s% s# a. p6 f2 r
    前提:会简单使用Vim9 k6 w7 @; b+ ^% Z1 c. o

      a7 z. V8 ?% X# d3 Y4 X' B+ R$ l# c( o" e3 B8 ?

    , _& X' E; q" j: }2 U6 _

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    开心
    2025-1-7 17:15
  • 签到天数: 773 天

    [LV.10]以坛为家III

    发表于 2018-12-25 19:46:47 | 显示全部楼层
    jonah_w 发表于 2018-12-25 06:37
    4 A' n9 U/ l" P2 d" T' k我天, ~ 还分全角半角…7 b! i5 F' l, ^  j" \# s! D2 i6 ]  w
    " R2 S0 d- d6 |0 Z+ [
    我的软件不行吗?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:55:01 | 显示全部楼层
    在尝试大家提供的各种方案中… 有些门槛好高,边摸索边学习
    ! O! A' @7 ?" M9 ]( {5 X6 j
    ! R5 Z" v$ Z3 a: V3 U% u+ O9 e2 i; C  w7 B; r/ Z0 f
    非常感谢大家提供的方案。至少得弄通一个…
    ( k3 H6 q% P0 ~. Z5 S# m: S) g; P* H2 o
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:58:50 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46
    , o5 S1 Z# T6 p) O" T9 x8 C( G我的软件不行吗?

    5 y! G. n* Z; h' S& C" K各种方案一会儿都试试。
    + s" _; b' g6 q' O+ W- m- w# N感谢孤影大提供的工具。后面我都会反馈下哒。
  • TA的每日心情
    开心
    2019-5-28 07:39
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 2018-12-25 20:03:52 | 显示全部楼层
    本帖最后由 leescott 于 2018-12-25 20:15 编辑 ' `# }! U* f( T& R- s: u) q
    2 q" Q9 h& E! R, S8 U) V; z" m
    这种情况下,我喜欢用cnbook。) O4 G  [! Y, y8 k# l) i
    复制原件到新建文本里面,替换\n为空。再把<d:entry替换为\n<d:entry,就成了一行。
    0 t: M# w: c9 p& @正则表达式替换那个词。比如,(\<d\:entry id\=\")(.*)(ja\" d\:title\=\")(.*)(\"\>\<d\:index)(.*)~(.*)$替换为\1\2\3\4\5\6\4\7同一个正则表达式,多点几次。直到文件没有那个符号(搜索不到为止)。: ?: d/ J  J4 t  j% l+ L! W& g
    最后,把该转行的地方,如第二步替换。
    & t% }$ [$ r. z2 W
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:10:16 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46
    * U- l. W$ z4 |+ `) B( v我的软件不行吗?
    ( |$ D: _. m" h* X
    之前想要处理日汉双解词典里的全角“〜”有问题。0 J3 M$ k* C" a5 N! M' D
    不知是不是这个全角是日文特别符号?
    ; z$ g. p, f0 H1 m% A也许可以让使用者自行贴上要替代的符号会更好用些。
  • TA的每日心情
    开心
    2025-1-7 17:15
  • 签到天数: 773 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:11:34 | 显示全部楼层
    oversky 发表于 2018-12-25 11:10
    9 m5 l: m$ X# \. Z/ J! P之前想要处理日汉双解词典里的全角“〜”有问题。( U& m, S% s+ x, x/ g
    不知是不是这个全角是日文特别符号?
    # J& p4 `! V/ U" N: l! M. V也许可以让使用者 ...

    + b" [/ M) l8 @& A4 t* g7 m3 m软件项目文件丢失了,不过你可以通过编辑器把全角的~替换成半角的~
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-7 05:44 , Processed in 0.027759 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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