掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 904|回复: 5

[求助] 在EmEditor的正则表达式查找和替换中,能否实现数学计算?

[复制链接]
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

    发表于 2020-7-15 00:23:39 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-7-17 17:28 编辑
    - Z3 \- s; t, F; H3 R; W4 R
    8 @) C, W: y: `请问在EmEditor的正则表达式查找和替换中,能否实现数学计算功能,比如将<file name="(.*?)" guid=".*?"><analyse><perfect segments=".*?" words="(.*?)".*?<inContextExact segments=".*?" words="(.*?)".*?<exact segments=".*?" words="(.*?)".*?<locked segments=".*?" words="(.*?)".*?<crossFileRepeated segments=".*?" words="(.*?)".*?<repeated segments=".*?" words="(.*?)".*?<total segments=".*?" words="(.*?)".*?<new segments=".*?" words="(.*?)".*?<fuzzy min="50" max="74" segments=".*?" words="(.*?)".*?<fuzzy min="75" max="84" segments=".*?" words="(.*?)".*?<fuzzy min="85" max="94" segments=".*?" words="(.*?)".*?<fuzzy min="95" max="99" segments=".*?" words="(.*?)".*?</analyse></file>替换为\1,\6,\7,\2,\3,\4,$13,$12,$11,$10,\9,\8,\5\n,能否将\6,\7替换为它们的和& s9 H4 P6 N6 a" R, v5 e
    ) y7 r& _, T. f) ~4 X
    可以用以下示例内容进行测试:/ K# Q: ]0 _, M% V" S& o& r
    <file name="Chap04.xml.sdlxliff" guid="294656b8-5378-4540-b897-a617d96003d0"><analyse><perfect segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><inContextExact segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><exact segments="83" words="517" characters="2536" placeables="55" tags="31" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><locked segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><crossFileRepeated segments="1008" words="81" characters="399" placeables="1138" tags="1138" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><repeated segments="97" words="471" characters="2453" placeables="205" tags="176" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><total segments="1453" words="3784" characters="18672" placeables="1855" tags="1760" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><new segments="208" words="2159" characters="10640" placeables="335" tags="316" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><newBaseline segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><newLearnings segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><fuzzy min="50" max="74" segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><fuzzy min="75" max="84" segments="0" words="0" characters="0" placeables="0" tags="0" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><fuzzy min="85" max="94" segments="26" words="247" characters="1190" placeables="51" tags="47" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /><fuzzy min="95" max="99" segments="31" words="309" characters="1454" placeables="71" tags="52" repairWords="0" fullRecallWords="0" partialRecallWords="0" edits="0" adaptiveWords="0" baselineWords="0" /></analyse></file>9 y; _  H- ~3 ^1 A- T9 ?/ L( `4 H
    2 a, D2 H) R( I
    需要用支持10个以上分组的19.1以上的版本才行
    3 ^5 H+ p; U  E$ K8 i! R& I  c5 r3 ?6 M& R" o) B

    7 ?$ o9 b3 N2 B7 Q- \1 [Version 19.1 新增特性使用以下格式为超过 9 个的向后引用添加了正则表达式支持:\k<10>\k<11>\k<12>,…。如果用作替换表达式,则也可用以下格式:$10$11$12,…。
    % s* a7 K. i2 j& Z2 R+ t+ I* J3 x! s7 K3 Y4 x" w  U
    好像使用JavaScript语法进行替换,可以执行加减乘除。不过我不懂JavaScript语法7 e& i( O6 I. I% p* `: p

    # Y, n  E% K6 i# z5 R% ]7 A# m
    2020.7.17 我自己找到解决方案了,虽然不太完美,无法一次完成,执行完上述语句后,再接着执行 ^(.*?),(\d+?),(\d+?),替换为\J "\1," + (\2 + \3) + "," 即可, P/ X$ A1 l# |4 o. E

    7 b3 m4 o8 m+ H/ D5 o
    # {0 ]" \2 m% r* k4 O
    / m% ^! ~2 o8 |6 J8 f( b) w6 _
      w1 i- f0 i5 Z* `  B8 Y! H
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-7-15 07:34:03 | 显示全部楼层
    我也想问,有时候还是会遇到需要计算的情况,不过正则这样的标记语言应该不支持,没见过相关运用实例,所以遇到需要运算的情况我都会想办法转移到Excel中去
  • TA的每日心情
    奋斗
    2 小时前
  • 签到天数: 2330 天

    [LV.Master]伴坛终老

    发表于 2020-7-15 12:07:44 | 显示全部楼层
    比较自然的方法是用Python之类的程序实现。一般的正则表达式没有对引用结果再计算的功能,EmEditor的 \J 实现了JavaScript表达式的求值,可以参考帮助手册的 How to - Search - Replacement Expression Syntax。除了简单的四则运算,主要涉及字符串方法的使用,可以参考MDN这个页面:https://developer.mozilla.org/en ... obal_Objects/String。完全不去了解JavaScript是不现实的。
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    发表于 2020-7-15 12:22:04 | 显示全部楼层
    Vim就可以很容易实现,例如:* W4 d  o9 Z& Q* S) z

    ( H- }! b, d. ]  i8 J# n# ?7 m计算如下结果:
    4 f5 I5 k7 X" U# n& v9 F
    1. 12*33
      7 f8 x) B  T; H$ U4 l8 B7 t# |
    2. 35*99
    复制代码

      Q! i/ }( p0 }5 h使用命令:6 C6 R+ T! u, K1 l  g
    1. :%s/\(\d\d\)\*\(\d\d\)/\=submatch(1)*submatch(2)/
    复制代码

    + \; t9 j) K+ K! L! T1 _$ ~4 X, |+ W0 e: w6 h. q2 G
    输出:$ X& b* G* s7 T. t
    1. 396( E9 b! S& Z" b$ Q( ^
    2. 3465
      ; B  D5 X( l" j2 a1 D! h
    复制代码
    5 D, J# N; r. D0 E9 q8 x' u8 I- u
    ' R( W+ P$ ]% `! v
  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 633 天

    [LV.9]以坛为家II

    发表于 2020-7-15 16:54:31 | 显示全部楼层
    VimVim 发表于 2020-7-15 12:22# c, \# P' I$ F1 R$ A+ @
    Vim就可以很容易实现,例如:
      O6 O2 O# t% _- s. q5 q9 n0 @- D* v5 \# w0 o4 @
    计算如下结果:
    $ g3 _9 |  b6 G8 c$ k/ u7 T+ `
    厉害
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-7-17 19:08:02 | 显示全部楼层
    wdscxsj 发表于 2020-7-15 12:070 b0 }  a. ]- x! E; O% }
    比较自然的方法是用Python之类的程序实现。一般的正则表达式没有对引用结果再计算的功能,EmEditor的 \J 实 ...
    # X& _- ~- }7 ^) r7 ?: S! V
    根据你的提示,我找到解决方法了
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 03:05 , Processed in 0.047494 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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