掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 6089|回复: 55

[求助] 正则表达式请教

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

    [LV.6]常住居民II

    发表于 2018-12-25 14:43:56 | 显示全部楼层 |阅读模式
    本帖最后由 jonah_w 于 2018-12-25 14:47 编辑 - {( F3 B# O  w% Q7 z8 w- G3 u

    6 }3 N& z; A0 X; s在制作Mac词典的过程碰到一个问题,就是有的词典的词条释义里用波浪线 ~ 代替了词条本身,我想重新用真正的词条替换掉波浪线 ~,不知道有什么好办法。1 Y+ O  ]; ?. s% D; W

    ) [2 @1 R+ x/ V3 n. n$ p0 |& h% M词条内容的格式是类似这样的:" t; g* w! R/ E& x# }3 P4 `/ m3 m6 ^
    1. <d:entry id="_38ja" d:title="xxx">0 z) U* n- d; J& m% J
    2. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>5 A3 B# N; A6 e6 ?9 Q# C
    3. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>/ \$ R/ Y+ y* h$ A
    4. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>& h# S( m1 c0 d5 I; j
    5. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>' I. y) `- m" {, e" }# Z
    6. </d:entry>
    复制代码
    ! A9 w3 ?; f7 E# R; ]5 l
    需要将每个entry里的 ~ 对应替换为当前词条entry 的 title值。
    : O9 y' g' I1 m# C不知道可以通过正则表达式实现吗,或者是否有更好的方法实现这个。* g  b. ]; J. m

    0 N, S" c; \* z- m: e$ {7 R0 u5 \2 E( i& a( ^8 _: J  ?8 `
    这个是已经制作的Mac词典专辑。
    " G& u6 E7 }, o4 U4 z; {/ J/ i7 Whttps://www.pdawiki.com/forum/fo ... ction=view&ctid=428  H, i8 Q( d' I8 S
    3 Q8 @4 f6 J8 _, h4 v( n
    如果问题解决,愿意赠送任一指定的Mac词典(公开的或者未公开的)。
    # K2 B3 j; D9 z! {/ T' \先行谢谢了。
    3 h. G6 u; k- }- E7 Q8 l, e. {' e8 `  {' W& M9 U+ E

    1 |( {9 s, O8 G! Q7 f! B9 W$ ~5 ]( X

    / I* V' A, H' A* g
    $ V; m. ?% q" g  F/ P4 W* [. ^
  • TA的每日心情
    无聊
    2019-1-1 20:10
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2018-12-26 10:02:26 | 显示全部楼层
    这问题用 XPath 可以不用这么烧脑,用正则表达式则是把简单事情复杂化了,附 python 程序实现,依赖 lxml 库。
    , q5 |! ?6 I$ k7 e( n. {: A

    1. 0 O( a' R( j, c  X& n; J& ^/ A- }
    2. #!/usr/bin/env python2' r- z) z4 C/ L8 P& X
    3. # -*- coding: utf-8 -*-
      * j- t  z/ D$ ]3 T) t  B; s
    4. """
      , F/ ~9 }& y  R; d
    5. File: replace_tilde_with_title.py6 t) w. f& u0 i4 F1 R
    6. Author: zzhirong1 K4 u! Y/ k4 p" B, E: t
    7. Email: [email protected]; |  o: @6 S+ w  W+ r
    8. Description: 替换 span 下的 ~ 为 d:entry 的 d:title 属性
      . A2 ^0 a1 j$ {' ~/ J! ?
    9. """
      - _8 h; }" Q! H. T+ [
    10. 9 T% h9 [: t( _4 I4 x
    11. from lxml import etree& Q5 |$ y' v# ]$ B- ^
    12. + d, v6 \$ p1 ]- q, h. s; u
    13. s = """<?xml version="1.0" encoding="UTF-8"?>4 k8 l$ o; X0 R
    14. <d:dictionary xmlns="http://www.w3.org/1999/xml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
      & I& q+ L( U0 J' V& o
    15. <d:entry id="_38ja" d:title="xxx">: r# ]0 d* w' P+ X% h
    16. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>: d& s  _6 N" A; y  g7 m
    17. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
      - B3 X9 ?- t( X7 U: K1 l# y  Z
    18. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
      ! H8 O6 \7 ?4 O( o7 M
    19. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>
      $ P. _" @/ K6 A" j
    20. </d:entry>! R: {/ P. I% S0 V$ T
    21. </d:dictionary>- K' u! a* n* g! l2 m2 y
    22. """
      " Q9 C5 l. Q2 p6 ^. D3 L

    23. ! Q9 d# }: ]% N- P+ Z9 ]+ C8 ^
    24. xml = etree.XML(s)5 P. t5 i7 i" V2 ?
    25. D_NS = xml.nsmap["d"]1 K+ [0 s8 q, H+ c
    26. XML_NS = xml.nsmap[None]
      : r  w& i( \' R; ?( [3 d% P0 d. r0 G

    27. ) k' t' i% N! q, W; d3 i$ I
    28. for entry in xml.xpath("//d:entry", namespaces={"d": xml.nsmap["d"]}):
      ) ?$ m2 m3 ]2 i7 ]9 _3 f" V. O# @
    29.     title = entry.get("{%s}title" % D_NS, "")
      # i3 U2 d4 r  L
    30.     for span in entry.iterfind("./{%s}span" % XML_NS):
      ' L' a; _  t- I+ f7 x7 v; y8 f/ u
    31.         span.text = span.text.replace("~", title)
      0 }' M! N/ q4 m; |
    32. print(etree.tostring(xml))
      + k! p; p/ Z/ a/ L& |
    复制代码

    7 I- V6 h4 W3 i& k; F* x+ [

    本帖子中包含更多资源

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

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

    [LV.7]常住居民III

    发表于 2018-12-26 06:37:07 | 显示全部楼层
    本帖最后由 VimVim 于 2018-12-26 11:59 编辑
    8 y8 s- b$ J* P$ \: E( P
    jonah_w 发表于 2018-12-26 00:042 g! G7 b! @( n0 w
    是正则的宏处理吗? 可不可以直接说下正则的思路,然后我试试在其他编辑器写出来,对vim尤其是宏这块完全 ...
    , \: R+ ]8 X: D2 u" [' [
    1、正则的思路二楼已经说的很清楚了,这里再补充一点详细信息:  P% x' _7 l9 `9 O
      N# J/ N6 W, I" D8 @. Q5 G# P) a

    % m6 d6 K3 s4 s* E7 F' s8 j; Z我只是照这个思路根据你的词典结构具体实现,并采用vim的替换功能,以及宏命令重复运行该替换操作。% M$ k  Z! {# [' I" Y
    ) L" s! ~+ K. I4 P5 [. D
    2、你只要:help usr_10即可获得关于本解决方案所需要的Vim基础知识6 V) @* l1 Y0 H3 c
    2 g' u$ l' H4 n2 }) ?" V# u, {
    3、补充方案一的具体思路:2 N- ?& T% X7 v& W
    $2h:定位光标到词条定义中" e* R8 G0 E1 X/ U8 u" U/ N& q# {
    "tyi":将词条复制进寄存器t(寓意title)
    3 \. P9 P5 N) W$ Y4 h' `; _vit:选中当前位置所在标签所包围的内容7 ^$ S( L0 u8 F5 x5 l) g
    :s/\~/^Rt/g:在上述选区范围内进行搜索替换,将所有的~替换为寄存器t中的title内容(其中^R是指Ctrl+r,并非简单字符)4 n2 e# L0 p9 X. H, N
    /<d:entry:搜索定位到下一个词条起始位置5 p  z5 q+ }" S; Q
    最后将上述指令放入寄存器中,并用宏命令@重复执行该寄存器的所有指令。
    ! n4 T) q- j9 i  `$ d9 R# }  t/ {; \6 k% [/ [
    ; p, t; D4 X2 q2 x
    ) m2 ]. F2 k4 i# `0 K' a

    5 k; ?( Y/ k( z# Q) a; Z$ H$ \/ K5 m* q7 n/ T" l) i

    ' z( q/ _+ B7 E/ i/ ~6 l

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2019-1-12 12:25:55 | 显示全部楼层
    本帖最后由 jonah_w 于 2019-1-12 12:27 编辑 8 y0 W+ }$ W' [( Q3 P7 z+ o$ e# q
    anyid999 发表于 2018-12-25 17:41
    / e) [# ?& {* D$ K7 O7 `新建个文件夹:. {6 K6 e8 P8 R/ s, ?: D3 E. X: r# W
    把附件解压放入,
    ( q" e: c" ^# u" C! ?将你的要修改的txt文件, 更名为 inp ...

    1 s" O# w" x; _' w; m1 F今天刚试了下这个脚本,发现有错误:
    4 X# \& `$ t; U# N# `
    1. Hello World!
      9 @( ~! L+ ?' t3 N- k
    2. panic: runtime error: index out of range, ~. C; k8 i9 n( D  M! m
    3. 0 ?" `1 s- ~. N' n6 j% K# o4 f8 N
    4. goroutine 1 [running]:  t! K' @9 @6 z! j
    5. main.aEreplace(0xc0000a6a11, 0x10, 0x290, 0x0): D& G$ U) ?2 |/ L
    6.         D:/Xspace/Xmen/re.go:27 +0xed
      $ r5 A0 f/ ~- x0 C; T
    7. main.main()! |* M  m7 r1 r' d5 Y/ d
    8.         D:/Xspace/Xmen/re.go:20 +0x20f
    复制代码
    ! B3 l- M8 \, o9 _, Q" b3 z
    " W& d* P9 M( g. s/ `$ N
    不知道是不是我机器的问题。+ z, G" a" j2 J) S" J

    + S5 v$ r9 `! x$ N/ _0 o" [0 r这是input.txt内容:(更新一个附件:)# T& y% w* N$ V; _
    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">
      * t3 c. S- e; D  u
    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>1 j4 }- K' Q. X
    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>/ q6 P7 A; W" ^5 u3 M) 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  一直替换到找不到为止。
    ; k4 @  B2 f/ [2 X( v) K# t$ m0 \  _7 l
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 14:59:33 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    9 A# a& ?, }, X& P4 S这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    6 r' _6 ^+ t4 B! Y: v& Y
    这个词典词条不是一行,一个<span> 一行… 可能一个词条里有很多个<span>9 G  s1 h. K1 i- b$ C$ l8 {0 M* s
    然后 ~ 可能有多个… 上面那个正则可以匹配到多个 ~ 吗?+ j' N- Z- v/ P) G  S8 @/ ]

    0 B" k+ n- ?: S9 z# r不过我先改成几个词条成一行,然后试试这个正则。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:10:04 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50) O# K( I7 u8 Q8 L% U  r2 j  L7 J
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    * _, h6 r5 r, W9 c好像不可以,没有匹配到内容
    , w: u8 a% I. Z# x: {1 I ; ^+ [! h# R( s- S9 \% l$ H5 v
    & a5 J) c. W6 |: c% R( b
  • TA的每日心情
    开心
    2020-2-19 01:15
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2018-12-25 15:19:37 | 显示全部楼层
    一个替换~的小工具
    " x2 M2 \2 ~* }. n. Shttps://www.pdawiki.com/forum/fo ... hread&tid=29088
    ; i/ }& T" }5 Y(出处: 掌上百科 - PDAWIKI)% k& ?( J1 ?! h4 l1 }/ m
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:29:15 | 显示全部楼层
    dfsfd 发表于 2018-12-25 15:19, _; K( l7 h, f. I# K0 Y9 |+ d
    一个替换~的小工具# l5 ^+ P# n& [; o8 }
    https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=29088, Z9 a) x  V! o% Q: A- h: v
    (出处: 掌上百科 - ...
    7 G! a. g& R6 k2 t5 ]
    我等下翻出我那台老Windows试试,感谢dfsfd提供信息# t' ?' a0 F5 g+ ^
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:37:03 | 显示全部楼层
    我天, ~ 还分全角半角…: R4 o# ~$ C; U/ F7 E. \1 @6 P

    ; K5 S+ T5 r- @! K8 j
    7 H9 A- w7 x( M  z5 k7 f8 b% E9 I我再重新试试…
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 15:50:52 | 显示全部楼层
    jonah_w 发表于 2018-12-25 14:59
    0 C8 D* `6 ~$ F. s& \这个词典词条不是一行,一个 一行… 可能一个词条里有很多个
    " l' l7 {# _1 r1 b然后 ~ 可能有多个… 上面那个正则可以匹配 ...

    . Z8 F- D( a( A, w0 j. i4 |; l: Z不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    : [1 b& Y- K+ {; Q9 P: Y0 r* {多个~也没关系,可以执行多次查找替换
    : p, T( H2 H1 ?全角半角~也没关系,用[~~]就好
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:55:54 | 显示全部楼层
    niusmth 发表于 2018-12-25 15:50; X$ y: b: {* [% z
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行: k& r- m8 \9 [8 A7 u% |( n
    多个~也没关系,可以执行多次查找替换
    ) h- P! N2 m! K6 L全角半角 ...
    ! ~* F4 |" r: \9 M8 @. N
    多行容易 这个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
    & r5 ]( m2 a0 t& Q1 }! K' T) U这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    , X# o3 P8 {* I$ W1 g1 e7 f( m
    刚才 ~ 的半角全角弄错了… 又试了一下以后,发现这个正则可以匹配最后一个 ~# T& S' o1 A5 k9 J2 A
    多次执行替换可能最终可以解决。感谢y大这个思路,很赞。
    . u% Q1 |; n0 s" k* @* o* C- g* u下一步就是将所有词条放在一行去。
    5 i7 ^6 p- S  c# H- g5 ]
    ( [/ `; |. s7 @" w0 S不知道有没有可以一次性匹配entry下所有~的方法。  E: E/ ]4 j4 M7 _% f0 |

    ; ~- A4 q! b! i% C! ^$ Q; K" X# |; q0 n- s4 V
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 16:20:14 | 显示全部楼层
    anyid999 发表于 2018-12-25 16:149 r; U. P3 R/ O
    这种情况, 写个替换程序最佳应用场景...

    , R$ j' S5 A% L' @) o( @自己写个程序? 最想通过一个通用的正则一步到位的解决,目前看… 难
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 17:08:20 | 显示全部楼层
    jonah_w 发表于 2018-12-25 15:55
    + Z& P3 B7 \9 h+ J3 k" y  Y: X1 D: i多行容易 这个entry的title匹配到下个entry的~去了… 很烦的
    ' X! I( d7 |9 f: U& r, Y9 E0 w
    别用贪婪模式啊
    ) j3 e" H$ j) C3 h* H. A在</d:entry>前结束
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:22:26 | 显示全部楼层
    本帖最后由 anyid999 于 2018-12-25 17:25 编辑 $ Q" D: G( H- t" g. [" d

    2 t3 b  f9 [% `新建个文件夹:
    9 ~  y. A: @+ n4 j* \$ R把附件解压(re.exe)放入,
    8 ^, @3 F) f- O( C  A; E将你的要修改的txt文件, 更名为 input.txt,放入. `# }2 Z* s. `0 W5 _9 w4 R9 ?
    9 A  Z, M0 R/ Y# Z, B
    运行re.exe8 y$ _" z% R: m# @" f

    " d7 r% M& j) \. E1 {0 Z3 S/ d6 U0 B有问题问我.
    + u& n8 D' L8 Y

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:22:28 | 显示全部楼层
    niusmth 发表于 2018-12-25 17:08* r" ~$ P4 ^4 ]) l. H; ]" {
    别用贪婪模式啊5 r& E4 D0 F% X
    在前结束

    9 T9 n6 W( C7 h: j" l2 R, N没用贪婪模式,因为下一个词条也有 </d:entry>
    # M' K2 q2 i% ~2 o/ N7 w4 u" ]如果这个词条没有 ~ 就会匹配到下一个词条,不管用不用贪婪模式
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:27:37 | 显示全部楼层
    anyid999 发表于 2018-12-25 17:22
    5 ?/ O. o2 O- y新建个文件夹:
    . M- T# ~; M% a5 o/ z) n把附件解压(re.exe)放入, 6 D/ w+ O% I) S. l. j
    将你的要修改的txt文件, 更名为 input.txt,放入

    " F, Q7 O$ q* P! `  o8 j  v  j我目前是mac环境,优先看看能不能在Mac上搞,不能再换吃灰的老windows…9 l8 {+ }# O3 e0 S! I
    # c8 j, j+ C! K1 a- o
    感谢提供资源。
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:41:38 | 显示全部楼层
    新建个文件夹:
      J; O' O& X1 e$ M" A' t把附件解压放入,
    ' j9 v: X5 l' Y& H0 c' [4 e8 `将你的要修改的txt文件, 更名为 input.txt,放入
    - ]# r+ A' F* w) F: C# F3 \  V+ A1 o/ |2 C1 Z1 c9 |9 o5 ~) \
    运行. G+ z5 T& N( Z# C: B4 p
    * S& n" Z% W# B0 G# r- w
    有问题问我.
    . F% W- A' L$ W2 T3 m
    ! u5 t& E6 Z1 c; M5 {

    本帖子中包含更多资源

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

    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 编辑   W" S8 Z; ^# V  r6 `! r

    : Y$ f0 ]* C" Q5 w  b  m给你两个解决方案,均已测试通过!
    - C3 {1 j  \- j$ W
    9 _: i( a2 s6 I) X# M' x
    1 k  x0 l! \, c( S7 G' {" q+ m
    ; ?) ^. B1 i& U# e% f附件:上述截图用到的测试文件及Vim命令。
    * @# u' h# ]$ ~, A前提:会简单使用Vim
    ; N) T  l% J) H! H: ]/ P5 ^6 d$ n1 `
    " e0 F/ J: z( I5 P
    5 l- K3 L+ }+ ^3 I
    + W. i0 Z$ G8 U9 E' _* H

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    开心
    昨天 17:11
  • 签到天数: 808 天

    [LV.10]以坛为家III

    发表于 2018-12-25 19:46:47 | 显示全部楼层
    jonah_w 发表于 2018-12-25 06:37
    % t: A4 V$ s' b  O* ^8 M我天, ~ 还分全角半角…
    5 D& T) m) N! j& k( l5 Y! Y
    5 i" O- \' T2 _: f
    我的软件不行吗?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:55:01 | 显示全部楼层
    在尝试大家提供的各种方案中… 有些门槛好高,边摸索边学习
    / b4 s1 x" k( F$ N; j9 R; C; s7 w" |/ j

    & F7 v& h" o" q( \5 P  |非常感谢大家提供的方案。至少得弄通一个…& y& i* e) t5 l) f2 k  p

    % k1 P1 d, R( Z0 a4 r: s7 m
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:58:50 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46; [+ u% o% N9 g- S3 |) F. c
    我的软件不行吗?

    ) ]4 f: Y& G2 b, l各种方案一会儿都试试。
    . Y8 ^4 q: D8 w3 f感谢孤影大提供的工具。后面我都会反馈下哒。
  • TA的每日心情
    开心
    2019-5-28 07:39
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 2018-12-25 20:03:52 | 显示全部楼层
    本帖最后由 leescott 于 2018-12-25 20:15 编辑
    & t  S/ `8 ]9 b
    - L4 H1 f" D+ r% L# X) I这种情况下,我喜欢用cnbook。
    / i6 ~6 `2 }0 X) @2 Q0 X" P. Z7 n复制原件到新建文本里面,替换\n为空。再把<d:entry替换为\n<d:entry,就成了一行。9 z/ @8 {1 f" E0 c  ~* E
    正则表达式替换那个词。比如,(\<d\:entry id\=\")(.*)(ja\" d\:title\=\")(.*)(\"\>\<d\:index)(.*)~(.*)$替换为\1\2\3\4\5\6\4\7同一个正则表达式,多点几次。直到文件没有那个符号(搜索不到为止)。# f1 b2 @7 `" @/ G6 Z
    最后,把该转行的地方,如第二步替换。
    , u1 t1 [' I) L  {
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:10:16 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46" ]" M& f7 y4 S1 d, N
    我的软件不行吗?
    : |& F/ Y& J8 D4 J/ L* C* B$ `
    之前想要处理日汉双解词典里的全角“〜”有问题。3 c, x0 C' a  U
    不知是不是这个全角是日文特别符号?; w; {' b& S; C0 W' d! L  G. R2 J
    也许可以让使用者自行贴上要替代的符号会更好用些。
  • TA的每日心情
    开心
    昨天 17:11
  • 签到天数: 808 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:11:34 | 显示全部楼层
    oversky 发表于 2018-12-25 11:10
    0 P& H2 @) d6 e5 s3 V: f之前想要处理日汉双解词典里的全角“〜”有问题。8 K! }- w3 I1 J& d
    不知是不是这个全角是日文特别符号?" E3 D5 v1 F# |7 Q' g( X
    也许可以让使用者 ...
    5 J8 u' [9 a& K/ u
    软件项目文件丢失了,不过你可以通过编辑器把全角的~替换成半角的~
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-8-7 21:05 , Processed in 0.025063 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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