掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 701|回复: 7

[求助] 正则提取中文句子背后有英文翻译的情况

[复制链接]
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

    发表于 2020-8-1 22:54:27 | 显示全部楼层 |阅读模式
    本帖最后由 abtxu 于 2020-8-2 07:10 编辑
    ! ?) s. e8 B& X* I4 L% \5 ~
    . Y0 f1 U& c0 A# E) m1 z案例:' Q# l2 t3 l' n& f( c9 x  _
    《詩·東山》:“其新孔嘉,其舊如之何?”竊以爲當與《易》此節合觀,舊解未的。二句寫征人心口自語:“當年新婚,愛好甚摯,久睽言旋,不識舊情未一五變否?”乃慮其婦闊别愛移,身疏而心亦遐,不復敦夙好,正所謂“近鄉情更怯”耳。王建《遠將歸》:“遠將歸,勝未别時,在家相見熟,新歸歡不足”;則求金者遠歸之喜詞,與舍軀者生還之疑詞,區以别矣。西方古詩歌或歎喋血餘生,無錢無食,襤褸如丐,千里歸來,則婦初不閒曠,與不知誰何生子累累(Wohlgebrauchte Weiber,/Ungewisse Kinder);或託爲妻詬夫從軍云:“汝去我甚急,頭插鳥羽,獨不慮歸來時身將披龜甲耶!”(Ma di penne,a fuggirmi,il capo adorna;é porterai nel trionfo altero/delta luna ottomana ambe le corna!)雖口角獷鄙,要亦如王弼註所言情事也。
    1 C' D  U3 R" G% ^$ I$ n5 v0 F  j6 m# G' W
    需要的匹配形式:  “中文中文”(non-Chinese character)例如:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(Meine Sätze erläutern dadurch,dass sie,der,welcher mich versteht,am Ende als unsinnig erkennt,wenn er durch sie- auf ihnen-über sie hinausgestiegen ist)
    0 y( S/ t% E2 a$ H" b4 P
    0 b& r, e/ D- o& M9 T/ }, Z$ L1 ~! \: N# Q* T5 @- V, f! n
    大致上可以确定括号内的内容可以使用([^一-龠].+?)实现匹配。
    # ~+ r0 ~4 n+ F) D: B( b  }0 A: U0 U5 w& t
    问题是怎么做到匹配双引号中的中文的时候,只匹配括号之前的第一个句子的双引号,即不要匹配成:
    " L4 y% d; {3 ?7 l$ @- ?
    7 y3 P# A# O8 i“故記誦者,學問之舟車也。人有所適也,必資乎舟車,至其地,則捨舟車矣;一步不行者,則亦不用舟車矣。”當世哲人維德根斯坦謂:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(Meine Sätze erläutern dadurch,dass sie,der,welcher mich versteht,am Ende als unsinnig erkennt,wenn er durch sie- auf ihnen-über sie hinausgestiegen ist)+ e8 N2 T# w+ G6 j6 X* |

    : j8 m5 K6 Y; j0 l  N即:9 I! P/ M$ e. J
    只匹配:3 L( T' G9 l9 h/ r; Y$ _) h: R
    中文中文(non-Chinese character)
    , X9 N2 e6 T7 j! `* ^; ~" _& ]2 Z6 G# W4 O3 H6 W
    但避免这种情况:  ~0 ~) m, X8 R' A: E
    中文中文中文:中文中文”。中文中文中文:“中文中文(non-Chinese character)
    ' e6 ^7 |- x: Y4 `0 \3 ^0 p
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-1 23:29:12 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 07:52 编辑 ( q7 C0 u6 a0 b! ]% P) h
    & r) P% t- f) C2 I0 f3 D* X+ S8 f
    匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:
    1. “([^“”]+)”(([^\x{2E81}-\x{FE29}]+))      /* \1匹配中文,\2匹配英文*/
    复制代码
    / T( @+ ^/ y, k( A) L
    或者这样也行:* j6 O/ k& j' f
    1. “([^“”]+)”(([^()]+))        /* \1匹配中文,\2匹配英文*/
    复制代码

    " w+ v' {) B- B' v
    4 d$ G/ m# q* a9 l$ j: U
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-8-2 07:08:22 | 显示全部楼层
    本帖最后由 abtxu 于 2020-8-2 07:10 编辑 8 ^1 V& s- o* A" q: g  e
    Mandolin 发表于 2020-8-1 23:296 ?7 f7 ?. U: J4 y
    匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:
    ; |2 C3 ]4 W! B& h/ ]+ Y9 }& _
    * j$ M& z' Z9 `6 P4 P1 C ...
    ; O) o% j1 L3 J1 H
    多谢回复!4 q! e& f4 O4 B! t4 J6 t
    已经更新了介绍。
    & U4 L: a- U) }我的问题可能是一个思路的问题:先确定了括号中的外文的匹配方式,怎么做到匹配前面的有且只有一句双引号中的中文,而不把更前面的带双引号的中文的第一个双引号,当作双引号的起点。只匹配:
    ' W! [+ k! q( y! y中文中文(non-Chinese character)
    3 \  ~) x5 W; D: r. l! Z0 A( c/ |0 C4 x& C! J8 u
    但避免这种情况:
    0 l" k. t0 L# i/ K; O( y# Q中文中文中文:中文中文”。中文中文中文:“中文中文(non-Chinese character)
    7 w2 C! T; V, O1 }
    & T& Q& v7 Z: @; k
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 07:37:52 | 显示全部楼层
    abtxu 发表于 2020-8-2 07:08) ?& r- m2 I! ~3 I
    多谢回复!
    " n, W  L: V8 M1 }2 J. l$ ]; y( H已经更新了介绍。 & D3 o3 m+ t9 p0 A
    我的问题可能是一个思路的问题:先确定了括号中的外文的匹配方式,怎么做到 ...

    3 R8 L- N1 Z0 \4 l7 j  c嗯,那我就理解对了,上面给的代码能解决你的问题吗?
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

    发表于 2020-8-2 07:45:38 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 07:52 编辑 2 Y" \( Q+ T0 P0 y6 k9 J/ Y9 D7 k' M
    Mandolin 发表于 2020-8-1 23:29
    * w' C/ p  @! N) y8 `匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:
    $ G6 V9 u+ x7 L8 j& Z7 M: @& e: Y$ e5 i( k
    ...

    # i- }  {6 \: ]0 R7 ?: w6 j; u: F多谢分享正则表达式技巧。1 \; u2 z) Z* A0 J

    0 \4 L6 b: C& l& Q4 B9 Z; z1 s& Z; V( }, N6 y6 z2 U
    # I/ j# z: Y1 g8 y" j& G" S
    . Q1 C* t+ @& X0 \
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-8-2 08:56:29 | 显示全部楼层
    Mandolin 发表于 2020-8-2 07:37& x0 H8 d% M. x2 x. p' R! X
    嗯,那我就理解对了,上面给的代码能解决你的问题吗?
    $ R0 K5 I3 o. x
    非常感谢!可以解决了!/ Z8 A: `+ k8 P4 A
    可否再拓展一下,把中文引号前面的部分也匹配进去?也就是把以下红色部分也匹配到。
      H* Q( s7 o0 C& U3 R+ p  f當世哲人維德根斯坦謂:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(Meine Sätze erläutern dadurch,dass sie,der,welcher mich versteht,am Ende als unsinnig erkennt,wenn er durch sie- auf ihnen-über sie hinausgestiegen ist)6 I, G8 z7 d; ~( u  s! \
    % G) y0 F2 P: |0 I$ \9 |
    观察到 當世哲人 前面可能有引号(其实也可能是句号,也可能没有)
    " y0 K8 z5 L9 X. n* d當世哲人
    % h1 z3 ]; ~4 P2 R: \我试图用[。”]*([^“”。]+)”(([^\x{2E81}-\x{FE29}]+)匹配,但没有成功。& u; {( b& \% [- Q& }  C

    ' p6 v/ j8 M  l+ t8 Q) w7 i9 z9 d5 G4 x$ K# p( c4 @* ?8 t1 h
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 10:13:12 | 显示全部楼层
    还要匹配前面部分的话,可以试试:0 t, i& M" ?  G* J5 ]* N& _
    , r/ F7 i/ X4 f3 `) a
    1. [。!”]*([^。!”]*)“([^“”]+)”(([^()]+))    /* \1匹配前面部分,\2匹配引号内中文,\3匹配括号内内容*/
    复制代码
    + S  q+ }) g9 b: M4 ]: M

      v: E! S/ M' X: e% {' o+ e) N也不一定行,可能需要视情况修改,你多试试,大概用法知道了就可以举一反三
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-8-2 10:19:34 | 显示全部楼层
    Mandolin 发表于 2020-8-2 10:13
    : h: p1 [( u) ~1 i" P还要匹配前面部分的话,可以试试:

    4 {1 }8 J: [" p7 c; ~3 k可以了,非常感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-20 21:06 , Processed in 0.042290 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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