掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2895|回复: 55

[求助] 正则表达式请教

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

    [LV.6]常住居民II

    发表于 2018-12-25 14:43:56 | 显示全部楼层 |阅读模式
    本帖最后由 jonah_w 于 2018-12-25 14:47 编辑 : U- p1 ]9 p! B8 y2 L, u3 W; D
    8 V* `& w& v  U$ x5 y
    在制作Mac词典的过程碰到一个问题,就是有的词典的词条释义里用波浪线 ~ 代替了词条本身,我想重新用真正的词条替换掉波浪线 ~,不知道有什么好办法。* @: E. i5 L6 f4 x
    7 u- e( E$ a8 C- V- Z, B0 _
    词条内容的格式是类似这样的:7 `( @& ?, {( W: x& q
    1. <d:entry id="_38ja" d:title="xxx">
      3 n( D8 q/ K  I1 H3 n0 W/ @
    2. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
      # j" m6 Q: l9 L
    3. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
      5 @; V" V4 }8 \+ D5 G( b7 L
    4. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
      1 P* }1 G, y" X5 e9 i+ Z
    5. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>! r: o0 `" t! ]0 |5 F) t/ D
    6. </d:entry>
    复制代码
    , }% A1 |4 q3 M  z
    需要将每个entry里的 ~ 对应替换为当前词条entry 的 title值。6 E& x" @, E4 P  p9 W
    不知道可以通过正则表达式实现吗,或者是否有更好的方法实现这个。& Y2 u" S9 w" G  ?+ B9 H+ X; G

    4 I, S8 J& v5 |" s  A
    0 G+ i- c7 H! s" E. |$ G这个是已经制作的Mac词典专辑。
    6 R1 q0 D5 ~2 {' q4 N  Zhttps://www.pdawiki.com/forum/fo ... ction=view&ctid=428# o9 A" k1 r) C

    + |. j& Q% K9 _1 s如果问题解决,愿意赠送任一指定的Mac词典(公开的或者未公开的)。1 @- }0 R( A$ n% s
    先行谢谢了。, l2 {/ D- g: J( T

    ( j9 X8 _9 @" Y, A, L# ~+ [1 O! F& D) @& r% M" W

    1 R; p# r# n- e0 ?
    + v) G7 N+ o: ?! ~6 {+ K( V0 N! K, H1 x$ h! N+ \3 t8 I
  • TA的每日心情
    无聊
    2019-1-1 20:10
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2018-12-26 10:02:26 | 显示全部楼层
    这问题用 XPath 可以不用这么烧脑,用正则表达式则是把简单事情复杂化了,附 python 程序实现,依赖 lxml 库。
    : U6 s$ Q# ^4 p+ M  z; C# n

    1. 8 d& q' W( r: Q) J. q
    2. #!/usr/bin/env python23 Z' l& i# C/ P6 U. b
    3. # -*- coding: utf-8 -*-
      ) T+ I  v# \3 k6 J
    4. """/ e/ Z; Q  f& c% e& S; j" I6 S
    5. File: replace_tilde_with_title.py6 S8 z- m4 Q- R: f# v: r
    6. Author: zzhirong
      9 F2 x. {$ y- i- E7 z1 c7 d' H
    7. Email: [email protected]
      # `8 R0 i& ?1 _3 Q* E) v( H
    8. Description: 替换 span 下的 ~ 为 d:entry 的 d:title 属性% ], @4 i" S6 h+ G6 K( v
    9. """
      % v- F# V, Z5 ^! C. q
    10. * l/ v' J& u3 C3 j+ j% A- @) k# x
    11. from lxml import etree5 n" b# Y( H  g( x- t
    12. ; ^. v& @! l: \0 y! P
    13. s = """<?xml version="1.0" encoding="UTF-8"?>
      ! m! u5 T0 u% U5 ?  K0 d
    14. <d:dictionary xmlns="http://www.w3.org/1999/xml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
      . ^; X& _$ o! b2 _2 P" ]
    15. <d:entry id="_38ja" d:title="xxx">) W# Q8 `. m- O, C  g+ d4 n$ F
    16. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
      # C( c4 _( z0 w1 Y. ^1 ^3 u
    17. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>7 F; d, M9 O* \4 q
    18. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
      2 D- W; T  |1 H, y! b6 Y
    19. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>/ k, J# L9 k+ Q1 ^2 i
    20. </d:entry>
      5 X2 k; B, f+ y) E
    21. </d:dictionary>* e7 S: N9 d3 V5 m# L1 J+ U
    22. """/ x1 k) N3 R; k0 w  E3 p
    23. 3 G5 V& [' j) ]4 q0 O
    24. xml = etree.XML(s)
      + w, {7 U& ]9 J$ v+ G+ s4 ^1 S$ F
    25. D_NS = xml.nsmap["d"]
      / u/ B. g( D$ Y7 o" b  o8 M
    26. XML_NS = xml.nsmap[None]) e+ n, B" a. X0 E; P! V
    27. + n5 D8 G/ y. @- b6 K
    28. for entry in xml.xpath("//d:entry", namespaces={"d": xml.nsmap["d"]}):
      1 `! A3 V; T9 h' s4 @/ k
    29.     title = entry.get("{%s}title" % D_NS, "")8 }0 Q* `6 p1 ^) f& W
    30.     for span in entry.iterfind("./{%s}span" % XML_NS):- H/ W# ^# T+ s4 \* g+ V" c! l; |0 v
    31.         span.text = span.text.replace("~", title)
      ' K0 s" D/ K2 d9 X8 Z+ n  ]
    32. print(etree.tostring(xml))! m/ @; m6 P% s
    复制代码
    2 A5 U8 R9 N$ l  |1 s* f6 R

    本帖子中包含更多资源

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

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

    [LV.7]常住居民III

    发表于 2018-12-26 06:37:07 | 显示全部楼层
    本帖最后由 VimVim 于 2018-12-26 11:59 编辑 , Q+ z4 [; t- k( n6 [7 T0 q
    jonah_w 发表于 2018-12-26 00:04
    : W# Z5 G! L$ K7 n$ h2 u是正则的宏处理吗? 可不可以直接说下正则的思路,然后我试试在其他编辑器写出来,对vim尤其是宏这块完全 ...

    - Y. A: x# b1 f% U7 E4 M# j! o! ]1、正则的思路二楼已经说的很清楚了,这里再补充一点详细信息:8 U6 b1 U: t8 {: D/ }& `

    . P. }& w8 ~3 D9 [- M: j
    % ^' W. G' p* \1 Z我只是照这个思路根据你的词典结构具体实现,并采用vim的替换功能,以及宏命令重复运行该替换操作。
    * ]" j' D" i3 x9 ^. C- T6 q! V* W, [4 v% T9 J+ w! ^
    2、你只要:help usr_10即可获得关于本解决方案所需要的Vim基础知识4 [: E/ \2 m1 l9 ]% O

    6 m" O4 s: D. C  j9 G. x& R. P3、补充方案一的具体思路:
    $ y, u+ N8 K6 [; W" I# c$2h:定位光标到词条定义中& Q$ A: F: v* f( K: K
    "tyi":将词条复制进寄存器t(寓意title)8 c$ G/ x, {( P" |
    vit:选中当前位置所在标签所包围的内容
    3 ~* C1 Y  m$ A/ U* }# Z( S! E:s/\~/^Rt/g:在上述选区范围内进行搜索替换,将所有的~替换为寄存器t中的title内容(其中^R是指Ctrl+r,并非简单字符)# U4 ]0 E: `% P; E& P% Q
    /<d:entry:搜索定位到下一个词条起始位置, ?1 ?2 Z% Q% m' S6 U
    最后将上述指令放入寄存器中,并用宏命令@重复执行该寄存器的所有指令。) F# s! L6 p0 P$ W  N+ G+ s

    9 U6 W' a$ \8 F8 j9 Z& u; c6 |5 v2 P5 ]# }/ B$ _* C

    $ T* T: E& S- g( T) k
    ) `  `; Q; g$ J  h8 Q: l: i: |/ g$ O
    # t6 ^8 W% q4 R' h3 G$ W4 C1 I

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2019-1-12 12:25:55 | 显示全部楼层
    本帖最后由 jonah_w 于 2019-1-12 12:27 编辑
    * z: F$ s- p' y+ V) Y( M
    anyid999 发表于 2018-12-25 17:419 d' I2 R/ v. m6 g& [5 e0 W
    新建个文件夹:% N4 a& \" [6 d$ r$ X; @5 @4 U9 a
    把附件解压放入, / K% h8 s( R) |9 [" }" y
    将你的要修改的txt文件, 更名为 inp ...
    # K# \# H: b  J
    今天刚试了下这个脚本,发现有错误:) U7 F4 r, q$ W" a% @
    1. Hello World!3 I# x' M8 Q5 j8 l
    2. panic: runtime error: index out of range' |/ ^  i( N7 Z. `

    3. 2 c/ h6 ~  k" l+ z
    4. goroutine 1 [running]:
      0 |  P7 h8 E4 V8 U
    5. main.aEreplace(0xc0000a6a11, 0x10, 0x290, 0x0); L! c7 [7 q- X! N$ T
    6.         D:/Xspace/Xmen/re.go:27 +0xed
      6 g7 W# }4 e. Z+ N; Z. n8 w
    7. main.main()
      & n8 T% O4 L3 S7 {9 Q" {3 P
    8.         D:/Xspace/Xmen/re.go:20 +0x20f
    复制代码

    & L4 Z5 B) D7 _' V9 r9 k, i
    0 R5 {- k$ V; N! K3 i4 D+ l不知道是不是我机器的问题。, J7 W; F4 s  `4 j% ~
    , C' `+ u  W& C( P  R3 C, T+ q9 G
    这是input.txt内容:(更新一个附件:)
    ! }1 V1 t: v8 Y
    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">
      $ h! L" ^5 n0 I4 J! k' ?
    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>
      % s, r2 \; F/ c
    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>9 I+ ^0 y: A- @1 D0 \
    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  一直替换到找不到为止。
      x: {6 _2 ^% T  g
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 14:59:33 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    ' c8 R/ x  V- p" L& G2 Q这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    4 F( Q7 P: _  m% g, `0 s% i
    这个词典词条不是一行,一个<span> 一行… 可能一个词条里有很多个<span>
    / s+ n* a0 X! X( Z! t" t8 ]1 ~然后 ~ 可能有多个… 上面那个正则可以匹配到多个 ~ 吗?& `0 Y7 @% v, }0 A0 [
    # x5 ]/ u7 t; S
    不过我先改成几个词条成一行,然后试试这个正则。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:10:04 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50$ k& z0 i- u; h
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    & s, M( O  @( |( v好像不可以,没有匹配到内容# q7 w5 }8 [2 r+ @1 i
    0 ^6 D6 k- c4 t2 R

    & J  ~. _% ^2 f6 q4 C
  • TA的每日心情
    开心
    2020-2-19 01:15
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2018-12-25 15:19:37 | 显示全部楼层
    一个替换~的小工具& @: h0 B( q8 I8 I& v9 H
    https://www.pdawiki.com/forum/fo ... hread&tid=29088
    6 s; N+ H# c2 O, H/ V# ~(出处: 掌上百科 - PDAWIKI)
    - H9 C( S  Q. A
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:29:15 | 显示全部楼层
    dfsfd 发表于 2018-12-25 15:19  i. T& v4 F/ X6 R3 C: ]5 I
    一个替换~的小工具
    6 v; z' Q/ ]0 |" qhttps://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=29088$ f* f* @9 i; {, N  H% }
    (出处: 掌上百科 - ...
      k9 W% |& _5 h9 b% A) L
    我等下翻出我那台老Windows试试,感谢dfsfd提供信息& w1 g5 R2 F4 R/ N
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:37:03 | 显示全部楼层
    我天, ~ 还分全角半角…' z$ Z0 h7 U* r: u. a5 _
    6 I$ X) d% d. B' y# c

    / h: u# x& J4 g, F+ C我再重新试试…
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 15:50:52 | 显示全部楼层
    jonah_w 发表于 2018-12-25 14:59
    : u- H" [1 a% p2 w2 m4 [1 U这个词典词条不是一行,一个 一行… 可能一个词条里有很多个  |# G1 h7 u6 x& `- G
    然后 ~ 可能有多个… 上面那个正则可以匹配 ...

    ! G, j1 Z: v6 b7 B不是一行没关系,有的正则表达式引擎支持.也匹配回车换行8 w4 K: s" t8 e3 ]+ q- S" o) _8 M! o
    多个~也没关系,可以执行多次查找替换0 P0 y: T$ o! c5 _6 y* f
    全角半角~也没关系,用[~~]就好
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:55:54 | 显示全部楼层
    niusmth 发表于 2018-12-25 15:50# E7 r+ n  O, Q& C0 g1 M  Q( ~
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    6 R* R6 v; S2 ~# s多个~也没关系,可以执行多次查找替换
    $ O# M  V" S9 }1 Y- T8 e全角半角 ...

    * e. B! P( g$ k* q5 z多行容易 这个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:506 {! z4 N, b$ S* `9 P
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    6 X& T! [$ {* `0 d' \
    刚才 ~ 的半角全角弄错了… 又试了一下以后,发现这个正则可以匹配最后一个 ~; ?5 K8 _# H! {& }1 {: c
    多次执行替换可能最终可以解决。感谢y大这个思路,很赞。) q; e" C- x- f1 s
    下一步就是将所有词条放在一行去。
    : {) f8 t4 {& y  d5 I0 v
    & v2 w$ x/ R# b0 q# r3 d5 s不知道有没有可以一次性匹配entry下所有~的方法。
    0 z! I# O- b& g7 f6 ]& G( P6 [9 c1 t/ \- q9 t$ C
    " g2 L% ^9 Z) d0 G
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 16:20:14 | 显示全部楼层
    anyid999 发表于 2018-12-25 16:14( e+ Z: U* U/ M3 J, r$ @6 H" z
    这种情况, 写个替换程序最佳应用场景...

    / @! Y8 Q* F% W* @2 e% N7 @自己写个程序? 最想通过一个通用的正则一步到位的解决,目前看… 难
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 17:08:20 | 显示全部楼层
    jonah_w 发表于 2018-12-25 15:55
    - G3 j- G0 ], h多行容易 这个entry的title匹配到下个entry的~去了… 很烦的

    ) O( M- u/ O# @别用贪婪模式啊, P: G8 e5 ]7 ]2 E
    在</d:entry>前结束
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:22:26 | 显示全部楼层
    本帖最后由 anyid999 于 2018-12-25 17:25 编辑
      C8 |* T* [( j) ~( G; v8 R* v1 s! }0 \( w, s% F3 L# K7 J
    新建个文件夹:3 J' D: {$ G: ?! b  z
    把附件解压(re.exe)放入,
    * x& T1 x. R! y- y& Q" E8 s将你的要修改的txt文件, 更名为 input.txt,放入& ~! z0 Y- [. t" e0 a

    " ~0 f( k4 y  z4 |运行re.exe  Q& n- p9 `5 {5 z6 W& `
    / j$ @% U8 ~) V: I1 @
    有问题问我./ q7 P+ R3 T7 z1 m) N

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:22:28 | 显示全部楼层
    niusmth 发表于 2018-12-25 17:086 \% i& L1 A: z- y
    别用贪婪模式啊7 X( U: j1 N' J/ Y' R+ g6 D0 ~1 J
    在前结束
    2 q$ W) }5 b/ [- W
    没用贪婪模式,因为下一个词条也有 </d:entry>3 @1 G& Q" {5 _
    如果这个词条没有 ~ 就会匹配到下一个词条,不管用不用贪婪模式
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:27:37 | 显示全部楼层
    anyid999 发表于 2018-12-25 17:226 P5 y. k0 e7 f) u
    新建个文件夹:
    % j, F2 Q4 j5 p- m# l把附件解压(re.exe)放入, . F, E  Y9 f1 s  c1 L* r
    将你的要修改的txt文件, 更名为 input.txt,放入
    ! m- z) ]/ E1 n& H' ~
    我目前是mac环境,优先看看能不能在Mac上搞,不能再换吃灰的老windows…
    / ]+ E7 j% Y7 M/ g; I6 Q; e' D4 j9 ^
    " O* z8 m& V8 y6 _* J8 w# N- o感谢提供资源。
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:41:38 | 显示全部楼层
    新建个文件夹:
    ) O- L9 i0 Y6 c) K8 h& O把附件解压放入,
    ) c- C5 @8 l7 F) K- a! w将你的要修改的txt文件, 更名为 input.txt,放入
    4 Q) U# ?2 g: f! Y% k/ p
    " n, l9 I" R! X6 p% i运行# y) H" f. X" S

    2 @( k6 W4 x; M, f5 a有问题问我.
    % l7 b1 ?+ o3 I3 K3 m* A+ L7 X
    3 x: L  h: N4 m) s

    本帖子中包含更多资源

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

    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 ]4 n3 t) u- a9 G" I/ B
    3 k* u8 m2 s: B8 S: G! d" Y
    给你两个解决方案,均已测试通过!# U7 c# y. D" ?5 u6 X1 ?0 M7 X
    5 }7 M1 m  Y( L7 v2 C  t
    ( E# ^# `0 H# D4 L  v

    6 o# k# {* y' l* J+ ?/ k' d; g附件:上述截图用到的测试文件及Vim命令。
    " U' ~: a8 p' f. y1 S+ B$ w& w' r前提:会简单使用Vim
    7 V5 V) L6 V  ?* @( ]0 i  Y5 M0 c& M% }) ^# f% F. i

    0 T% v( n; F+ L* h5 \
    * f9 ^9 e5 j3 y. W  s  U

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    开心
    2024-5-5 22:32
  • 签到天数: 760 天

    [LV.10]以坛为家III

    发表于 2018-12-25 19:46:47 | 显示全部楼层
    jonah_w 发表于 2018-12-25 06:37
    " f; ?  o: `' {我天, ~ 还分全角半角…; ^8 i/ ~  k% @) Z

    ' @( {4 j* E2 E2 `2 X我的软件不行吗?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:55:01 | 显示全部楼层
    在尝试大家提供的各种方案中… 有些门槛好高,边摸索边学习7 _$ _, I$ L* z2 O/ H6 ?
    ; J0 v* A# K& `7 R1 I3 a' C- e' y
    0 p7 e: D& a3 q) ]# u
    非常感谢大家提供的方案。至少得弄通一个…8 S' S8 y) t/ S# M7 K3 ^; y
    + ?1 o: p- h9 R
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:58:50 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46
    2 x* {4 F5 S0 {; i我的软件不行吗?
    ; z3 i: e8 E9 e7 B' E
    各种方案一会儿都试试。
    : ?5 n3 Y) X1 p+ N/ {0 D- s感谢孤影大提供的工具。后面我都会反馈下哒。
  • TA的每日心情
    开心
    2019-5-28 07:39
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 2018-12-25 20:03:52 | 显示全部楼层
    本帖最后由 leescott 于 2018-12-25 20:15 编辑 - |8 T4 B7 l& E5 }# [% Y+ D

    * g7 h% n% m- Y这种情况下,我喜欢用cnbook。( V. l) v  B+ z+ C7 i3 T. M4 Y- ^
    复制原件到新建文本里面,替换\n为空。再把<d:entry替换为\n<d:entry,就成了一行。
    1 j, a4 `: {( N- O正则表达式替换那个词。比如,(\<d\:entry id\=\")(.*)(ja\" d\:title\=\")(.*)(\"\>\<d\:index)(.*)~(.*)$替换为\1\2\3\4\5\6\4\7同一个正则表达式,多点几次。直到文件没有那个符号(搜索不到为止)。
    1 _- M, }$ [9 P+ ]最后,把该转行的地方,如第二步替换。
    " `; K7 A0 E: v
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:10:16 | 显示全部楼层
    孤影 发表于 2018-12-25 19:468 l5 `  J% t. P5 m" c
    我的软件不行吗?

    . [+ |6 r( D" N, o  v/ V  u) Q之前想要处理日汉双解词典里的全角“〜”有问题。
    + f- _0 h' ]2 W, q1 J: @% _# W不知是不是这个全角是日文特别符号?, B, u2 j5 m# \, D# i
    也许可以让使用者自行贴上要替代的符号会更好用些。
  • TA的每日心情
    开心
    2024-5-5 22:32
  • 签到天数: 760 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:11:34 | 显示全部楼层
    oversky 发表于 2018-12-25 11:10
    / \1 x' o* t' u- R0 x( M之前想要处理日汉双解词典里的全角“〜”有问题。
    / b! s: N" ^7 x不知是不是这个全角是日文特别符号?, v: |7 k; M! t+ {
    也许可以让使用者 ...

    : z" R* r) a! o  k' I软件项目文件丢失了,不过你可以通过编辑器把全角的~替换成半角的~
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-21 03:59 , Processed in 0.057458 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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