掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2852|回复: 55

[求助] 正则表达式请教

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

    [LV.6]常住居民II

    发表于 2018-12-25 14:43:56 | 显示全部楼层 |阅读模式
    本帖最后由 jonah_w 于 2018-12-25 14:47 编辑
    ' n5 V$ G% _! E" c( n2 ]6 B3 S; Z+ @* m
    * W$ N3 ]. p. E7 J8 t- M在制作Mac词典的过程碰到一个问题,就是有的词典的词条释义里用波浪线 ~ 代替了词条本身,我想重新用真正的词条替换掉波浪线 ~,不知道有什么好办法。
    3 V- k6 E+ o, l6 C5 f5 J% R' i
    词条内容的格式是类似这样的:) _! E' C% U1 G( I0 m5 N) R4 M, @1 J
    1. <d:entry id="_38ja" d:title="xxx">
      2 L* ~2 D, r% |3 C) r- h
    2. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
      ; @5 g- s) L! q( u* d8 o
    3. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
      $ t  Z; s: f0 ]- q
    4. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
      ) q5 r8 M6 ~, H' m$ V6 Z2 Q: w% d
    5. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>3 w0 `/ r, ~9 d" k2 d0 Q+ U
    6. </d:entry>
    复制代码

    & l5 p  {$ W: b" r/ d1 U1 c需要将每个entry里的 ~ 对应替换为当前词条entry 的 title值。6 N# ^% R: i/ h7 F# w' k* o" P
    不知道可以通过正则表达式实现吗,或者是否有更好的方法实现这个。. t) i; J5 p# b$ n) O1 O2 x- i

    * _  P9 P  P, X; E8 a8 r+ l9 [4 `; W
      W2 j% l2 \0 G  k& F* l6 G这个是已经制作的Mac词典专辑。
    * a* N% B: v; {5 x3 Hhttps://www.pdawiki.com/forum/fo ... ction=view&ctid=428( J6 j6 y# d: ^2 g& v$ ~' {( C
    $ K& f, {$ e( j9 c& l. P
    如果问题解决,愿意赠送任一指定的Mac词典(公开的或者未公开的)。; t+ Z% x" f- m+ B0 _5 Q% M4 C/ z
    先行谢谢了。
    - ^6 k9 ^& H7 C- }% N3 j& v5 F+ j( y* j$ r0 H9 p0 _# Z% f, [% p
    - I' H; T+ \; i; n' d# s

    , j7 w1 d4 H2 o' P
    6 t( v& A5 J5 T: a  U, \( @8 s8 x
    % G; z  @) }/ w
  • TA的每日心情
    无聊
    2019-1-1 20:10
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2018-12-26 10:02:26 | 显示全部楼层
    这问题用 XPath 可以不用这么烧脑,用正则表达式则是把简单事情复杂化了,附 python 程序实现,依赖 lxml 库。
    5 ~1 i) ?1 Q2 B5 ^) q8 z( y
    1. ' w5 n: S4 T: H' j4 t
    2. #!/usr/bin/env python2* p0 `6 Y! V0 ]
    3. # -*- coding: utf-8 -*-  H5 v% F1 `  K( y) i. G6 R& L. l5 k/ y
    4. """
      " i9 V4 v3 D* M$ S; _) J$ ~
    5. File: replace_tilde_with_title.py0 u6 |  C6 u: N4 {) R# Q, u5 q$ N% f5 [$ D
    6. Author: zzhirong3 M1 E; G0 n3 ]6 s/ u- y; M
    7. Email: [email protected]2 {: E: B8 p* r7 d
    8. Description: 替换 span 下的 ~ 为 d:entry 的 d:title 属性
      " x1 k$ R% S  T+ F" c9 U5 r
    9. """
      0 V" s  g# Y$ l! x' _1 x
    10. 7 m3 U1 W. _( l
    11. from lxml import etree  X8 Y  E" p1 @6 p* A. v7 j6 o
    12. ; e! c6 M6 m2 r# D  p
    13. s = """<?xml version="1.0" encoding="UTF-8"?>. z! [( V$ [1 B4 h( J8 `( o9 k
    14. <d:dictionary xmlns="http://www.w3.org/1999/xml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
      8 D6 n" a% e& Z- W9 H  b5 W
    15. <d:entry id="_38ja" d:title="xxx">6 o0 c  r0 q# a$ n2 e! P1 y
    16. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
      ; X7 ~* |- o) g* p4 x
    17. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>0 \" r% s  ]1 M* T9 N4 L+ i, M8 O
    18. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
      4 v/ O  X  E& O' c% K
    19. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>( G4 t" L4 L1 W" @8 S
    20. </d:entry>
      & c( n* A- }% r1 X% n
    21. </d:dictionary>! g& _8 q. D% l. b6 o
    22. """" v6 E+ N! O6 y$ P

    23. / E; x5 q3 l& S) `: F& O; v0 w. P
    24. xml = etree.XML(s)* ^' v7 ~( H2 ?6 T# x6 \) k) G1 O2 M
    25. D_NS = xml.nsmap["d"]
      " c+ e% C$ w# b3 Q
    26. XML_NS = xml.nsmap[None]( r! F3 ?" x1 B0 I. j
    27. 2 L$ J7 D: ~4 W( M- |8 q  ?4 }
    28. for entry in xml.xpath("//d:entry", namespaces={"d": xml.nsmap["d"]}):0 o9 e% J1 e. ]) A) I
    29.     title = entry.get("{%s}title" % D_NS, "")
      3 i$ l+ f1 k' ^# u1 y
    30.     for span in entry.iterfind("./{%s}span" % XML_NS):
      7 B! X, ~) Z4 V/ x( f) O5 S& d
    31.         span.text = span.text.replace("~", title)
      + a0 I; {5 F- ]2 H: x
    32. print(etree.tostring(xml))
      4 N; ^7 u# A/ S5 z3 W  `% ~7 h
    复制代码
    - c, o) h# d9 I/ ]3 L4 J7 U

    本帖子中包含更多资源

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

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

    [LV.7]常住居民III

    发表于 2018-12-26 06:37:07 | 显示全部楼层
    本帖最后由 VimVim 于 2018-12-26 11:59 编辑
    ! q# l- V1 X! ~, F8 K
    jonah_w 发表于 2018-12-26 00:04- b/ R5 k9 s( P; Y8 J
    是正则的宏处理吗? 可不可以直接说下正则的思路,然后我试试在其他编辑器写出来,对vim尤其是宏这块完全 ...
    : I7 H& B2 e3 x
    1、正则的思路二楼已经说的很清楚了,这里再补充一点详细信息:
    . e/ M; r6 j# D! w7 b8 X7 p# @! I4 p* i! O; i
    ! \( s$ d0 h4 c4 F
    我只是照这个思路根据你的词典结构具体实现,并采用vim的替换功能,以及宏命令重复运行该替换操作。+ |2 u- N+ R; M
    % K( Z1 d; b0 {) p/ d7 v) h* R
    2、你只要:help usr_10即可获得关于本解决方案所需要的Vim基础知识# E0 t: m) z4 g. J5 S4 h

    4 f' Q: Q! y3 g' n3、补充方案一的具体思路:# T0 f8 R, J+ |* b9 x
    $2h:定位光标到词条定义中
    + o3 k; i6 j! |( O# O# w"tyi":将词条复制进寄存器t(寓意title)
    0 N6 v( {- J! t1 Q5 V" B- ^" v3 {vit:选中当前位置所在标签所包围的内容
    ( j' N+ N, G; w/ G1 v/ N# N:s/\~/^Rt/g:在上述选区范围内进行搜索替换,将所有的~替换为寄存器t中的title内容(其中^R是指Ctrl+r,并非简单字符)
    % {1 n: N1 P: B  L6 v/<d:entry:搜索定位到下一个词条起始位置" K% F, I' |2 _8 \
    最后将上述指令放入寄存器中,并用宏命令@重复执行该寄存器的所有指令。
      L: D7 L1 t+ V+ o" e/ e
    4 G) J) d1 [# A& u3 z+ L0 q9 B) k+ ~. z' X0 \. n
    8 j9 D2 Y) H2 f
    5 C* }" G4 v. c& ^2 \

    ( j/ Q+ A8 s" b: V% U& O; g, M% S( Y( C4 C$ i2 U9 V

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2019-1-12 12:25:55 | 显示全部楼层
    本帖最后由 jonah_w 于 2019-1-12 12:27 编辑 4 m& R6 D% H! f: {' W
    anyid999 发表于 2018-12-25 17:41
      t; C$ j) C4 N' Q- Q新建个文件夹:7 r/ \( r, @2 N/ g7 J
    把附件解压放入, + l4 U2 T/ C$ A  Z* n7 R" O  h
    将你的要修改的txt文件, 更名为 inp ...
    0 i$ g$ X7 R; N0 X8 W% j! N" I
    今天刚试了下这个脚本,发现有错误:
    , ~. O* R  y/ ~  U" S4 {, s( r9 D+ ^; j
    1. Hello World!# b& {1 ]8 T' L, @1 x6 E
    2. panic: runtime error: index out of range
      , D8 {- [2 h$ x9 f. e

    3. , V) i6 D5 @5 r# ]
    4. goroutine 1 [running]:/ S, }6 J% t0 e) ?$ g1 Y
    5. main.aEreplace(0xc0000a6a11, 0x10, 0x290, 0x0)4 n( t9 i/ ?. w! m$ b
    6.         D:/Xspace/Xmen/re.go:27 +0xed
      ' V0 T+ n$ D8 m7 b0 }: G: W
    7. main.main()
      6 Y3 H& _1 W  `% `1 ~9 i* V7 H; O
    8.         D:/Xspace/Xmen/re.go:20 +0x20f
    复制代码
    - D5 R. {. s4 P( [3 F

    . M: j& W5 t  {: `不知道是不是我机器的问题。
    ; G6 ^% j/ ~6 f+ N6 a4 V3 [6 V& w5 B/ F+ v
    这是input.txt内容:(更新一个附件:)
      N2 d, r3 ~5 r1 W+ I9 W. \* t8 |( I  ?
    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">* K. E3 z! G( S& `; a: e8 c
    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>
      / f( d9 Y+ [' w2 t" o
    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>
      - C; W* n2 [+ `7 Z
    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  一直替换到找不到为止。2 p( N2 y2 z1 R+ @; U7 b
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 14:59:33 | 显示全部楼层
    y8888 发表于 2018-12-25 14:50
    " H: a$ T# L$ w1 i1 f: h! Z" ~, |# w+ ^这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    ! T) l7 g* X/ [& `1 E- z: g这个词典词条不是一行,一个<span> 一行… 可能一个词条里有很多个<span>
    ! D, C' [  K0 W! [然后 ~ 可能有多个… 上面那个正则可以匹配到多个 ~ 吗?
    6 n: o4 n" H$ Q0 h. W. a  A2 c* o' ?7 P2 b
    不过我先改成几个词条成一行,然后试试这个正则。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:10:04 | 显示全部楼层
    y8888 发表于 2018-12-25 14:507 d9 N/ `9 A' k4 H) @: N$ o) @* k
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    4 c" f0 P; D0 u5 ?  s" s3 G3 E
    好像不可以,没有匹配到内容
    , O% l- }0 C* O! c% n8 q3 f' ?
    6 Z( d, K) W( T- g% G3 }- h$ A$ i& r9 s3 w1 W2 Y; X9 m
  • TA的每日心情
    开心
    2020-2-19 01:15
  • 签到天数: 340 天

    [LV.8]以坛为家I

    发表于 2018-12-25 15:19:37 | 显示全部楼层
    一个替换~的小工具
    : u  ~8 o8 B" V, y8 Ahttps://www.pdawiki.com/forum/fo ... hread&tid=29088
    0 X( \- |7 n2 Y% B! F(出处: 掌上百科 - PDAWIKI)0 v" k& i" ^, i$ ]; S& ^& c
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:29:15 | 显示全部楼层
    dfsfd 发表于 2018-12-25 15:19/ Z! I0 q7 \9 _9 u
    一个替换~的小工具0 G2 H) H( h) e% t7 I! h5 s1 _* T
    https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=290885 T. |+ p6 i. z$ R% K
    (出处: 掌上百科 - ...

    " E+ I1 b- R# ]2 W# d# @4 P我等下翻出我那台老Windows试试,感谢dfsfd提供信息
    4 R" D" V6 A6 C3 U; C9 g5 W1 D
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:37:03 | 显示全部楼层
    我天, ~ 还分全角半角…
    $ Q, ]: e0 [/ F& B; z
    0 h  h2 n6 g7 s, G! M- T, v/ f! w& g: I+ T' r
    我再重新试试…
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 15:50:52 | 显示全部楼层
    jonah_w 发表于 2018-12-25 14:59
    & Z! Q& {8 K& I5 U8 P! y这个词典词条不是一行,一个 一行… 可能一个词条里有很多个( c0 z& s0 F+ S6 a
    然后 ~ 可能有多个… 上面那个正则可以匹配 ...
    : r6 t# g$ ~& e' }+ e
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    . m4 L( y  y" n5 g- ~& [多个~也没关系,可以执行多次查找替换& b1 w9 _  ]. N+ x2 l9 H
    全角半角~也没关系,用[~~]就好
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 15:55:54 | 显示全部楼层
    niusmth 发表于 2018-12-25 15:50
    4 f: y) }' Y' V! t9 r不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    9 O5 l1 h+ }7 y, a' j多个~也没关系,可以执行多次查找替换
    + I, x" P9 {/ [+ \全角半角 ...

    / S# d. X, |1 J$ Q' @. H- P5 s多行容易 这个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% m3 s3 [; b" Q. c6 `; z/ G
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...
    : A  I0 Q" |! q- a8 S
    刚才 ~ 的半角全角弄错了… 又试了一下以后,发现这个正则可以匹配最后一个 ~1 c* K* F% X9 \8 n2 K4 f3 C5 f
    多次执行替换可能最终可以解决。感谢y大这个思路,很赞。
    & m6 b1 ]! @8 E下一步就是将所有词条放在一行去。9 O# `3 t- F7 a5 v' u% A

    ' p" |: E$ t; ~* [2 X1 y1 s) i不知道有没有可以一次性匹配entry下所有~的方法。! ]9 \* }) }, ^! J. C7 i" E
    : J) f3 M* J) m  O/ u3 c
    $ k; R& ~( E3 F7 m0 @  P' W
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 16:20:14 | 显示全部楼层
    anyid999 发表于 2018-12-25 16:140 t' W4 c3 a; B
    这种情况, 写个替换程序最佳应用场景...
    . ^, ]  P5 B2 q
    自己写个程序? 最想通过一个通用的正则一步到位的解决,目前看… 难
  • TA的每日心情

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

    [LV.10]以坛为家III

    发表于 2018-12-25 17:08:20 | 显示全部楼层
    jonah_w 发表于 2018-12-25 15:551 ^% \0 S9 s" e7 \/ f
    多行容易 这个entry的title匹配到下个entry的~去了… 很烦的

    % h3 l& [% W3 B/ I5 A+ s2 [别用贪婪模式啊
    7 B6 ^# ]! X, q' I5 p在</d:entry>前结束
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:22:26 | 显示全部楼层
    本帖最后由 anyid999 于 2018-12-25 17:25 编辑
    1 o. u, X+ k3 R; l4 Q
      b0 u) v0 E9 W$ v/ @新建个文件夹:" J* U# _* o' [: @3 `1 _6 A! r
    把附件解压(re.exe)放入,
    ) G; d, D0 P3 H4 @( }/ U! \" C将你的要修改的txt文件, 更名为 input.txt,放入$ S5 ~' {" }" T) h

    0 F& N; P% H/ I) B  _3 j& w- ?6 o% }7 Z运行re.exe- i4 W7 B' v/ T2 V1 O
    5 C: i! A  v; F7 {. _- V  e. \
    有问题问我.
    3 U2 G6 ^* |' \# Q

    本帖子中包含更多资源

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

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

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:22:28 | 显示全部楼层
    niusmth 发表于 2018-12-25 17:08( H$ p# [( g# {, u9 P; ?
    别用贪婪模式啊1 B: V  K+ j+ I" n3 M
    在前结束

    # H( l) K9 G! M+ d, k没用贪婪模式,因为下一个词条也有 </d:entry>0 j# y: a/ N4 O* v6 I0 g$ R
    如果这个词条没有 ~ 就会匹配到下一个词条,不管用不用贪婪模式
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 17:27:37 | 显示全部楼层
    anyid999 发表于 2018-12-25 17:22
    ' ~; \, N: S+ v8 D5 D新建个文件夹:, X* e* z4 k2 `. \3 r: H
    把附件解压(re.exe)放入,
    2 |+ ^& F/ N/ V: Q+ K# I将你的要修改的txt文件, 更名为 input.txt,放入
    7 v) v6 I5 ]7 |' i, w
    我目前是mac环境,优先看看能不能在Mac上搞,不能再换吃灰的老windows…0 T. K# a& y; P7 ]. t! e: n

    $ G, l2 i; ]) R8 ^3 i# x感谢提供资源。
  • TA的每日心情

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

    [LV.7]常住居民III

    发表于 2018-12-25 17:41:38 | 显示全部楼层
    新建个文件夹:$ r4 N) |9 b( J7 G
    把附件解压放入,
    $ T( s* s9 p+ Y* s" a6 ^将你的要修改的txt文件, 更名为 input.txt,放入0 W% p# w% d; M/ g
    . w* \& b4 v* J/ t$ m. s  h* M
    运行
    - i' f' i: ]  \4 F" ^/ \5 n7 H: B' i+ T
    有问题问我.
    4 M& C$ p% G! q
    " E6 a6 ?" `* w# c

    本帖子中包含更多资源

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

    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 编辑 ; a8 R, D, @- O: P4 J0 I; o& u
    ! i* E8 Y+ N1 X! X
    给你两个解决方案,均已测试通过!
    ' c  W" q7 f0 c7 v) K$ Y. R6 W* I6 H9 R& F0 z

      Y2 o  p! b8 x2 P+ {2 {' i3 @: _5 W, E1 M1 R4 N4 d" {' M- d
    附件:上述截图用到的测试文件及Vim命令。
    $ `3 V9 }1 d/ y1 O前提:会简单使用Vim7 N( T. q4 i9 M2 e: L, w( \

    ' \4 ~! e4 n/ I# y  [- M, B# r6 D. y  a5 M5 a1 e

    ; \5 ^& k5 |  a- E3 o

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    开心
    前天 22:37
  • 签到天数: 758 天

    [LV.10]以坛为家III

    发表于 2018-12-25 19:46:47 | 显示全部楼层
    jonah_w 发表于 2018-12-25 06:373 x; g/ ?( W# @! X" s9 c) O9 [
    我天, ~ 还分全角半角…* Q# W9 |/ V$ p1 H* K# y

    : T; f) n" A% c6 V4 U; l( P/ i我的软件不行吗?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:55:01 | 显示全部楼层
    在尝试大家提供的各种方案中… 有些门槛好高,边摸索边学习8 n4 K) E. J" T( I' b% E! |9 k
    / T3 q5 h3 B$ b$ Y
    / d2 k4 ^: Y, x8 R! j
    非常感谢大家提供的方案。至少得弄通一个…/ J- B( n5 I- M) M! }
    " V5 l0 {8 n/ I& a, [3 N% D
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

     楼主| 发表于 2018-12-25 19:58:50 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46
    2 v2 [" b$ T% C. k, D, `  L我的软件不行吗?
    , h/ s/ ^! M- b: K" X
    各种方案一会儿都试试。9 {; W. |" F- S
    感谢孤影大提供的工具。后面我都会反馈下哒。
  • TA的每日心情
    开心
    2019-5-28 07:39
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 2018-12-25 20:03:52 | 显示全部楼层
    本帖最后由 leescott 于 2018-12-25 20:15 编辑 ) X( P; U" s5 n1 w

    - `/ C* j8 x; a* f7 c$ J这种情况下,我喜欢用cnbook。2 z. e$ K, A. h% \7 R2 D
    复制原件到新建文本里面,替换\n为空。再把<d:entry替换为\n<d:entry,就成了一行。
    & y0 v8 e7 @7 @& [- \正则表达式替换那个词。比如,(\<d\:entry id\=\")(.*)(ja\" d\:title\=\")(.*)(\"\>\<d\:index)(.*)~(.*)$替换为\1\2\3\4\5\6\4\7同一个正则表达式,多点几次。直到文件没有那个符号(搜索不到为止)。! |* ^8 \9 v7 i8 M% V" T' `
    最后,把该转行的地方,如第二步替换。# s  v- B9 Y4 ?
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:10:16 | 显示全部楼层
    孤影 发表于 2018-12-25 19:46
    8 s/ u  U) r, u; j我的软件不行吗?
    % i! q& H8 F3 J4 c) P3 R" C, @; d
    之前想要处理日汉双解词典里的全角“〜”有问题。" G* q; r6 u4 k6 a' |
    不知是不是这个全角是日文特别符号?
    7 o/ q. s- Q+ f/ X" C# W也许可以让使用者自行贴上要替代的符号会更好用些。
  • TA的每日心情
    开心
    前天 22:37
  • 签到天数: 758 天

    [LV.10]以坛为家III

    发表于 2018-12-25 20:11:34 | 显示全部楼层
    oversky 发表于 2018-12-25 11:10+ d  }/ q# u0 [5 I
    之前想要处理日汉双解词典里的全角“〜”有问题。
    - d6 a3 |1 e1 c( Q2 o. H$ I不知是不是这个全角是日文特别符号?
    " B  l1 B* W" P4 ~0 e+ H' N- W5 _也许可以让使用者 ...
    $ z2 x) }  R' z7 s
    软件项目文件丢失了,不过你可以通过编辑器把全角的~替换成半角的~
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 04:25 , Processed in 0.065418 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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