掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2551|回复: 12

[使用求助] 哪位仁兄熟悉正则表达式的?

[复制链接]
  • TA的每日心情
    慵懒
    2022-2-1 17:46
  • 签到天数: 105 天

    [LV.6]常住居民II

    发表于 2019-1-5 23:22:44 | 显示全部楼层 |阅读模式
    anki的查找和替换支持正则表达式,我的需求是:查找{{单词}}中是否为空,如果非空,则在其后加上“: ”(不含双引号)。举例:test->test:
    & I* B9 g, K1 s* z1 @试过很多次了,都不成功,可以用(\w+)查找到单词,但是如何替换搞不定。( l$ c: Y( A: \; ]
    哪位仁兄熟悉正则表达式的,能不能出手相助下?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-5 23:35:00 | 显示全部楼层
    本帖最后由 jonah_w 于 2019-1-5 23:53 编辑 0 `$ }/ S1 Q3 y7 o4 @4 X

    6 g" Y( s2 X9 c  T$ Q" H(?<={{)([^\s]+?)(?=}})
    ) F6 a5 P/ O* h$ B( A: l替换为:+ R: x  a, W! _
    \1:
    ' r$ j& V  B8 C9 @8 T, w( `# A- }, \7 ]) Q( D
    9 s9 s' o: J0 f7 }0 C8 N7 {& J1 a
    ( \, z1 g& N. T  e. L: l

    该用户从未签到

    发表于 2019-1-5 23:38:12 | 显示全部楼层
    本帖最后由 dongzhi1980 于 2019-1-6 00:14 编辑
    ) \1 o0 a' P# I( k, j" g; w4 y# a! c: K2 K/ P8 l
    我的需求是:查找{{单词}}中是否为空{{}},{{   }},{{单词-单词   }},{{  单词单词   }},如果非空,则在其后加上“: ”(不含双引号)。举例:test->test:7 N- m# N& D0 [. _6 s+ b
    试过很多次了,都不成功,可以用(\w+)查找到单词,但是如何替换搞不定: |' z) \8 R9 M" r. v0 P3 `# ^
    # }7 _. J5 y8 M7 ^7 h0 r6 g4 ?! |2 I
    {{\s*(\w+[-\w]*)\s*}}  -> {{\1:}} Emeditor通过
    - D# X1 H/ v+ m( m7 Q. Q' t. m2 L3 H+ v9 H
    我的需求是:查找{{单词:}}中是否为空{{}},{{   }},{{单词-单词:}},{{单词单词:}},如果非空,则在其后加上“: ”(不含双引号)。举例:test->test:
    % ~' L& Y# W  I! k- i+ U" Q0 d试过很多次了,都不成功,可以用(\w+)查找到单词,但是如何替换搞不定' s. W" E3 }1 f
    - Z, p1 Q& k: a5 G
  • TA的每日心情
    擦汗
    2023-3-25 13:49
  • 签到天数: 147 天

    [LV.7]常住居民III

    发表于 2019-1-6 09:24:58 | 显示全部楼层
    没看懂,贴几张anki的图比你这一大堆文字要清楚许多。你这个“为空”的“空”到底指什么?指单词字段没有内容,还是说单词字段的内容中有空格?谁知道呢。

    该用户从未签到

    发表于 2019-1-6 09:49:33 | 显示全部楼层
    本帖最后由 jeanleem6 于 2019-1-6 09:59 编辑
    ( e( |( j+ x4 Q" _' \& C3 t5 f; m5 A" W
    建议楼主分四步来处理:
    • 处理两对大括弧 {{}}之间只有空白字符的情况(空格、tab、回车等)
    • 处理两对大括弧 {{}}之间内容前面有空白字符的情况(如:{{  单词 单词}}、{{  单词 单词   }})
    • 处理两对大括弧 {{}}之间内容后面有空白字符的情况(如:{{单词 单词  }}、{{  单词 单词   }})
    • 给内容之后加冒号
      ) K, R2 U- E- @) P6 v! R  B

    ( O: K; {1 L4 Y* p3 M第一步正则及替换:
    1. {{\s+}}   //正则8 G4 `# v% n3 v6 b! E) W
    2. {{}}       //替换
    复制代码
    : H0 Z, x/ M  `) L3 A, [& _7 q( Q
    第二步正则及替换:2 A$ o) l, _  c$ {1 r
    1. {{\s+([^{}]+?)}}   //正则+ j$ n* k: F! t5 p% p
    2. {{\1}}                 //替换
    复制代码

    , d( `: P; G+ ]$ y6 d; |; O第三步正则及替换:% B' O# }( I6 j( i+ Q" g
    1. {{([^{}]+?)\s+}}   //正则
      7 v# f: m4 a% d- C' h. m
    2. {{\1}}                     //替换
    复制代码
    $ H2 _& S4 j5 _/ q$ D' j
    第四步正则及替换:" K. U" S! q) R; u
    1. {{([^{}]+?)}}   //正则. `3 `6 ~" M. B! [  A
    2. {{\1:}}             //替换
    复制代码

    & c( z" J: I2 _8 N1 m# i- V当然,其实第三步与第四步可以合并为一步
    ! K, r0 v% b  S" T( X
    1. {{([^{}]+?)\s+}}   //正则
      % F, d; |7 j) u$ k
    2. {{\1:}}                    //替换
    复制代码

    7 K1 p  L; V2 @* O% a; }/ `
    2 c, K1 j" E3 Z9 M! c# I( w2 z
    $ C, x, m. u% \, D; p% D! [2 M3 q% i) u, ~: F

    5 D  ~6 s, ^& C3 G2 `
  • TA的每日心情
    慵懒
    2022-2-1 17:46
  • 签到天数: 105 天

    [LV.6]常住居民II

     楼主| 发表于 2019-1-6 10:12:10 | 显示全部楼层
    谢谢上面几位坛友提供的表达式,我测试了都不行。我自己之前写的表达式,在线测试也是可以的,但是到anki的查找替换里面就没用了。( C% [) `, g2 j  ^

    - O4 c0 s0 g; K0 s( P2 y
    & n3 K# [8 W) ^3 U& N- H( i# n7 K6 H4 j) w: a+ z/ q; b) ^

    本帖子中包含更多资源

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

    x

    点评

    抱歉不用anki,所以不知道它的具体规则是怎样;不过看你直接用的我最后一步的正则,这样肯定很多匹配不了,必须从第一步开始,依次处理。  发表于 2019-1-6 10:36
  • TA的每日心情
    慵懒
    2022-2-1 17:46
  • 签到天数: 105 天

    [LV.6]常住居民II

     楼主| 发表于 2019-1-6 10:14:52 | 显示全部楼层
    宁冷越 发表于 2019-1-6 09:24
    ) ]! B3 B' j+ b) k没看懂,贴几张anki的图比你这一大堆文字要清楚许多。你这个“为空”的“空”到底指什么?指单词字段没有内 ...

    & c6 N* z  {, [# |2 l1 z6 q很简单,就是把上图中的{扩展1}字段里的tester,替换成tester:1 .
  • TA的每日心情
    擦汗
    2019-12-4 09:00
  • 签到天数: 302 天

    [LV.8]以坛为家I

    发表于 2019-1-6 10:44:09 | 显示全部楼层
    sunbird7800 发表于 2019-1-6 10:14
    / g! F# C/ R9 s6 O" e7 e很简单,就是把上图中的{扩展1}字段里的tester,替换成tester:1 .
    ' w4 H  d0 V  G) f* e) d
    在群里的话可以帮你搞一下,应该很简单
  • TA的每日心情
    郁闷
    2019-9-21 08:52
  • 签到天数: 250 天

    [LV.8]以坛为家I

    发表于 2019-1-6 16:22:06 | 显示全部楼层
    经验: 这种情况, 还是直接上截图来的痛快
  • TA的每日心情
    擦汗
    2023-3-25 13:49
  • 签到天数: 147 天

    [LV.7]常住居民III

    发表于 2019-1-6 18:08:43 | 显示全部楼层
    sunbird7800 发表于 2019-1-6 10:140 n" t! m. \& t- D- C
    很简单,就是把上图中的{扩展1}字段里的tester,替换成tester:1 .
    3 c  f4 }5 u. D
    如果只是根据你给我的这个回复说的要求,那么如下就可以。至于{{}},{{  }},{{单词  }},{{  单词}}等等这些我还是不明白你什么意思,多贴张图多好。, j8 F2 o5 k! C! C3 ]
    6 N# }4 L5 p8 E- ^9 \5 k8 u- H
    说明:& V* A2 @) B- W& E. M& [
    1,挑选出内容非空(我就当作这么理解你说的吧)字段:Keywords:_*,即字段名+英文冒号+下划线+星号3 W$ _6 G9 }# a$ z' d. |9 }
    2,全选经过1筛选的卡片,alt+ctrl+F,打开搜索替换窗口,选择好字段,勾选正则表达式,然后
    - s* I6 b8 J2 I8 b查找:(.*)+ U7 P, i8 L& a" ~
    替换:\1:1
    " Z# ^' A& A: I

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    慵懒
    2022-2-1 17:46
  • 签到天数: 105 天

    [LV.6]常住居民II

     楼主| 发表于 2019-1-8 17:50:48 | 显示全部楼层
    宁冷越 发表于 2019-1-6 18:08, v( O* J! R# O  s
    如果只是根据你给我的这个回复说的要求,那么如下就可以。至于{{}},{{  }},{{单词  }},{{  单词}}等等 ...

    9 B( d+ h- J4 R" k& A+ h这样确实可以了,原来可以这么简单。less is more,哈哈哈,12分感谢!
  • TA的每日心情
    慵懒
    2022-2-1 17:46
  • 签到天数: 105 天

    [LV.6]常住居民II

     楼主| 发表于 2019-1-8 17:50:52 | 显示全部楼层
    宁冷越 发表于 2019-1-6 18:08* c1 C: f7 C6 v" w: t& L
    如果只是根据你给我的这个回复说的要求,那么如下就可以。至于{{}},{{  }},{{单词  }},{{  单词}}等等 ...

    / H" k5 ~' Y  S& d这样确实可以了,原来可以这么简单。less is more,哈哈哈,12分感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-10 19:52 , Processed in 0.052901 second(s), 14 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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