查看: 405|回复: 7
打印 上一主题 下一主题

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

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

    [LV.9]以坛为家II

    41

    主题

    1527

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12565

    笑傲江湖章推广专家灌水大神章

    跳转到指定楼层
    1
    发表于 2020-8-1 22:54:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 abtxu 于 2020-8-2 07:10 编辑

    案例:
    《詩·東山》:“其新孔嘉,其舊如之何?”竊以爲當與《易》此節合觀,舊解未的。二句寫征人心口自語:“當年新婚,愛好甚摯,久睽言旋,不識舊情未一五變否?”乃慮其婦闊别愛移,身疏而心亦遐,不復敦夙好,正所謂“近鄉情更怯”耳。王建《遠將歸》:“遠將歸,勝未别時,在家相見熟,新歸歡不足”;則求金者遠歸之喜詞,與舍軀者生還之疑詞,區以别矣。西方古詩歌或歎喋血餘生,無錢無食,襤褸如丐,千里歸來,則婦初不閒曠,與不知誰何生子累累(Wohlgebrauchte Weiber,/Ungewisse Kinder);或託爲妻詬夫從軍云:“汝去我甚急,頭插鳥羽,獨不慮歸來時身將披龜甲耶!”(Ma di penne,a fuggirmi,il capo adorna;é porterai nel trionfo altero/delta luna ottomana ambe le corna!)雖口角獷鄙,要亦如王弼註所言情事也。

    需要的匹配形式:  “中文中文”(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)


    大致上可以确定括号内的内容可以使用([^一-龠].+?)实现匹配。

    问题是怎么做到匹配双引号中的中文的时候,只匹配括号之前的第一个句子的双引号,即不要匹配成:

    “故記誦者,學問之舟車也。人有所適也,必資乎舟車,至其地,則捨舟車矣;一步不行者,則亦不用舟車矣。”當世哲人維德根斯坦謂:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(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)

    即:
    只匹配:
    中文中文(non-Chinese character)

    但避免这种情况:
    中文中文中文:中文中文”。中文中文中文:“中文中文(non-Chinese character)
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    61

    主题

    627

    回帖

    16万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    162733

    QQ 章灌水大神章笑傲江湖章

    2
    发表于 2020-8-1 23:29:12 | 只看该作者
    本帖最后由 Mandolin 于 2020-8-2 07:52 编辑

    匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:
    1. “([^“”]+)”(([^\x{2E81}-\x{FE29}]+))      /* \1匹配中文,\2匹配英文*/
    复制代码

    或者这样也行:
    1. “([^“”]+)”(([^()]+))        /* \1匹配中文,\2匹配英文*/
    复制代码


  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

    41

    主题

    1527

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12565

    笑傲江湖章推广专家灌水大神章

    3
     楼主| 发表于 2020-8-2 07:08:22 | 只看该作者
    本帖最后由 abtxu 于 2020-8-2 07:10 编辑
    Mandolin 发表于 2020-8-1 23:29
    匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:

    ...

    多谢回复!
    已经更新了介绍。
    我的问题可能是一个思路的问题:先确定了括号中的外文的匹配方式,怎么做到匹配前面的有且只有一句双引号中的中文,而不把更前面的带双引号的中文的第一个双引号,当作双引号的起点。只匹配:
    中文中文(non-Chinese character)

    但避免这种情况:
    中文中文中文:中文中文”。中文中文中文:“中文中文(non-Chinese character)

  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    61

    主题

    627

    回帖

    16万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    162733

    QQ 章灌水大神章笑傲江湖章

    4
    发表于 2020-8-2 07:37:52 | 只看该作者
    abtxu 发表于 2020-8-2 07:08
    多谢回复!
    已经更新了介绍。
    我的问题可能是一个思路的问题:先确定了括号中的外文的匹配方式,怎么做到 ...

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

    [LV.7]常住居民III

    25

    主题

    646

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    16738
    5
    发表于 2020-8-2 07:45:38 | 只看该作者
    本帖最后由 wjl 于 2020-8-2 07:52 编辑
    Mandolin 发表于 2020-8-1 23:29
    匹配带英文翻译并且前面是引号标注的中文?没有完全明白你的意思,按我理解你是要这样?:

    ...

    多谢分享正则表达式技巧。




  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

    41

    主题

    1527

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12565

    笑傲江湖章推广专家灌水大神章

    6
     楼主| 发表于 2020-8-2 08:56:29 | 只看该作者
    Mandolin 发表于 2020-8-2 07:37
    嗯,那我就理解对了,上面给的代码能解决你的问题吗?

    非常感谢!可以解决了!
    可否再拓展一下,把中文引号前面的部分也匹配进去?也就是把以下红色部分也匹配到。
    當世哲人維德根斯坦謂:“倘明吾旨,則由吾言而更上陟焉,吾言遂無復意義,亦猶緣梯而升,盡級登高,則必捨梯也”(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)

    观察到 當世哲人 前面可能有引号(其实也可能是句号,也可能没有)
    當世哲人
    我试图用[。”]*([^“”。]+)”(([^\x{2E81}-\x{FE29}]+)匹配,但没有成功。


  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    61

    主题

    627

    回帖

    16万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    162733

    QQ 章灌水大神章笑傲江湖章

    7
    发表于 2020-8-2 10:13:12 | 只看该作者
    还要匹配前面部分的话,可以试试:

    1. [。!”]*([^。!”]*)“([^“”]+)”(([^()]+))    /* \1匹配前面部分,\2匹配引号内中文,\3匹配括号内内容*/
    复制代码


    也不一定行,可能需要视情况修改,你多试试,大概用法知道了就可以举一反三
  • TA的每日心情
    慵懒
    2021-11-4 14:19
  • 签到天数: 395 天

    [LV.9]以坛为家II

    41

    主题

    1527

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12565

    笑傲江湖章推广专家灌水大神章

    8
     楼主| 发表于 2020-8-2 10:19:34 | 只看该作者
    Mandolin 发表于 2020-8-2 10:13
    还要匹配前面部分的话,可以试试:

    可以了,非常感谢!