掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 708|回复: 7

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

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

    [LV.9]以坛为家II

    发表于 2020-8-1 22:54:27 | 显示全部楼层 |阅读模式
    本帖最后由 abtxu 于 2020-8-2 07:10 编辑 ( C# m; e. W5 j# N, S6 k, ^
    * V7 x. E* N6 M. C7 }9 P
    案例:
    9 N: N! B. i5 D$ l' C《詩·東山》:“其新孔嘉,其舊如之何?”竊以爲當與《易》此節合觀,舊解未的。二句寫征人心口自語:“當年新婚,愛好甚摯,久睽言旋,不識舊情未一五變否?”乃慮其婦闊别愛移,身疏而心亦遐,不復敦夙好,正所謂“近鄉情更怯”耳。王建《遠將歸》:“遠將歸,勝未别時,在家相見熟,新歸歡不足”;則求金者遠歸之喜詞,與舍軀者生還之疑詞,區以别矣。西方古詩歌或歎喋血餘生,無錢無食,襤褸如丐,千里歸來,則婦初不閒曠,與不知誰何生子累累(Wohlgebrauchte Weiber,/Ungewisse Kinder);或託爲妻詬夫從軍云:“汝去我甚急,頭插鳥羽,獨不慮歸來時身將披龜甲耶!”(Ma di penne,a fuggirmi,il capo adorna;é porterai nel trionfo altero/delta luna ottomana ambe le corna!)雖口角獷鄙,要亦如王弼註所言情事也。# w3 O: d- J0 y6 \" m: R! X+ k& ~3 l
    ) z) b8 X) A* u+ R. b4 }/ Y
    需要的匹配形式:  “中文中文”(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)
    & P: L  H* u8 G
    & s) P: }' ~8 P, X! n  c" s
    5 F) u6 _% }; C) R* U% Q3 }/ O# L大致上可以确定括号内的内容可以使用([^一-龠].+?)实现匹配。
    # N5 Q0 Y) k, f$ z; a5 J; A% Q. `0 c1 X
    问题是怎么做到匹配双引号中的中文的时候,只匹配括号之前的第一个句子的双引号,即不要匹配成:3 h6 N! \' ]% ~  E

    2 J# R5 V) g' W- ?; j) H; y: W“故記誦者,學問之舟車也。人有所適也,必資乎舟車,至其地,則捨舟車矣;一步不行者,則亦不用舟車矣。”當世哲人維德根斯坦謂:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(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)
    4 A$ N, T2 L6 n) H4 r- j
    & M  g9 M% t1 e+ c6 y4 w1 g4 z, M即:
    9 b4 e  \1 V/ p* E只匹配:
    1 ?, t+ ~5 v2 O; N8 \4 x; Z, F中文中文(non-Chinese character)
    6 m" I' T8 Z; ~7 x
    2 u" E3 p8 `. y8 B; z* x但避免这种情况:
    $ y+ O- e" X' k中文中文中文:中文中文”。中文中文中文:“中文中文(non-Chinese character)# B. v$ }4 V' d, q
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-1 23:29:12 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 07:52 编辑 ) r8 r, n) W. ^# ~
    8 l4 @+ n# z. c! N
    匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:
    1. “([^“”]+)”(([^\x{2E81}-\x{FE29}]+))      /* \1匹配中文,\2匹配英文*/
    复制代码

    ; n& O, M* H7 ?或者这样也行:% r: g3 ~% W1 @. m, M
    1. “([^“”]+)”(([^()]+))        /* \1匹配中文,\2匹配英文*/
    复制代码

    9 A3 R2 ~- f/ m6 F/ r) V! \5 s: ]7 X' ^7 V1 J& J
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-8-2 07:08:22 | 显示全部楼层
    本帖最后由 abtxu 于 2020-8-2 07:10 编辑 : X- d; x. [% J7 p! B$ v- C) R" h* y0 \
    Mandolin 发表于 2020-8-1 23:29
    * d+ C. ?  n% T! Y4 B2 n3 E' T6 B匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:/ P1 P+ E6 B2 Q: \: r

    2 h9 x1 @9 ]. \, ?! G4 j ...

      |3 k, C/ A9 K8 M多谢回复!
    + L: i- N) F2 _* a; R0 ~3 h0 K已经更新了介绍。 0 S2 i9 g/ W( V+ y0 X
    我的问题可能是一个思路的问题:先确定了括号中的外文的匹配方式,怎么做到匹配前面的有且只有一句双引号中的中文,而不把更前面的带双引号的中文的第一个双引号,当作双引号的起点。只匹配:
    3 X, N( Z3 Y: `5 H( D! }! D# G1 w中文中文(non-Chinese character)
      d0 T/ `( [* s& H( N  l* `- x. s* N* P5 Q1 W2 e
    但避免这种情况:  z5 \& p* h0 k4 b/ V6 h  q& J! V
    中文中文中文:中文中文”。中文中文中文:“中文中文(non-Chinese character)
    & t/ L/ k0 |6 E! j+ w& r8 `  {: O0 j* ^& O. l  N
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 07:37:52 | 显示全部楼层
    abtxu 发表于 2020-8-2 07:08" i3 G$ f& r" f( I
    多谢回复!
    & Y- X. @* Z2 a* X7 A已经更新了介绍。
    % \: \7 U+ y" k$ \' i我的问题可能是一个思路的问题:先确定了括号中的外文的匹配方式,怎么做到 ...
    ' o* \' i# W) r1 x8 ]2 R( \& X
    嗯,那我就理解对了,上面给的代码能解决你的问题吗?
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

    发表于 2020-8-2 07:45:38 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 07:52 编辑
    ' W0 m3 v- Y% u6 Y. E1 Q" m
    Mandolin 发表于 2020-8-1 23:29
    $ n0 X# S) \( D' M- Y" K3 E匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:
    8 Z9 {) }5 A1 p4 E; o/ H; X
    0 u3 h  H7 w" `6 v2 m! B; D7 f ...

    * {9 i9 ]" B( g% Y0 X多谢分享正则表达式技巧。
    - }0 }8 W. A( ~! ^: I' N4 S
    5 {, K' R8 u. u7 C" n  t
    # \' M' J$ m7 Z, j" F
    / E4 ^3 A( t- s' g5 I6 \5 m- h) ~$ B1 M/ Y
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-8-2 08:56:29 | 显示全部楼层
    Mandolin 发表于 2020-8-2 07:37, {: [0 ]6 E) m1 I- S
    嗯,那我就理解对了,上面给的代码能解决你的问题吗?
    - |# i2 D' K& l
    非常感谢!可以解决了!7 W/ c9 q1 I9 G, \7 q
    可否再拓展一下,把中文引号前面的部分也匹配进去?也就是把以下红色部分也匹配到。# D8 j% L; o& d3 d4 E* k& j
    當世哲人維德根斯坦謂:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(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)
    9 J& G7 [; L2 Q$ c$ O- X5 Y7 G( l9 K5 f
    5 [8 _! ^( n; Y观察到 當世哲人 前面可能有引号(其实也可能是句号,也可能没有)
    6 w& X* y; a7 W9 `1 H  G當世哲人! N  J+ @; c, N, ]+ D  j+ c
    我试图用[。”]*([^“”。]+)”(([^\x{2E81}-\x{FE29}]+)匹配,但没有成功。/ `: L2 @/ x2 F4 D# m. x0 G8 z6 n

    . t& {! f2 c4 e, q
    , @% E: p3 y$ x  G, w, f) c: j5 W
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 10:13:12 | 显示全部楼层
    还要匹配前面部分的话,可以试试:% U0 M1 v/ C2 v5 o7 l7 v
    6 Q) [, u0 A# m# L, F6 b# b( t/ h
    1. [。!”]*([^。!”]*)“([^“”]+)”(([^()]+))    /* \1匹配前面部分,\2匹配引号内中文,\3匹配括号内内容*/
    复制代码
    / q4 @1 M8 j) [, F
    4 p# [2 s1 h1 [6 |6 Q+ n
    也不一定行,可能需要视情况修改,你多试试,大概用法知道了就可以举一反三
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

     楼主| 发表于 2020-8-2 10:19:34 | 显示全部楼层
    Mandolin 发表于 2020-8-2 10:13
    & a- q; j3 v$ }% I" C还要匹配前面部分的话,可以试试:

    6 o% ?5 Q0 d# x& b5 o' H可以了,非常感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 06:06 , Processed in 0.037765 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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