【问题标题】:Get expression with regexp and capture the word使用正则表达式获取表达式并捕获单词
【发布时间】:2018-01-02 16:45:53
【问题描述】:

我是法国人,我们有一些全新的写作规范来使语言更具“包容性”。这意味着,如果针对每个人,每个词、变位词和后缀都必须是女性化和男性化的。

所以对于C'est le président 和C'est la présidente,现在是C'est lae président·e。 翻译:[She/He is the president]

但是人声合成不可读,所以我想提取混合词président·e并读两遍(阳性方式和阴性方式)。

到目前为止,我使用了一个正则表达式,它删除了新书写约定 (·-.•) chaine.replace(/t[·\-\.•]e/gi,'te') 中使用的每个不可读字符,因此它输出了阴性词 présidente。

但我想要一个输出为président et présidente

检测到/t[·\-\.•]e/gi 时的输出:word+t + " 和 " + word+te

很难说清楚,抱歉 :) 提前致谢!

【问题讨论】:

    标签: javascript regex syntax


    【解决方案1】:

    简介

    根据我的理解,您希望返回的字符串具有两种变体,使得 C'est lae président·e 变为 C'est lae président et présidente。假设这是对您要完成的工作的正确解释,您可以使用以下代码。

    我在下面使用[^ ]+ 的原因是JavaScript 在正则表达式中不能很好地支持Unicode 字符,所以这是我演示一个工作正则表达式的最简单方法(也适用于é 等Unicode 字符)是匹配除单词分隔符以外的任何字符(在您的情况下为空格字符)。


    代码

    var s = "C'est lae président·e",
        r = /([^ ]+)·([^ ]+)/gi
    
    console.log(s.replace(r, '$1 et $1$2'))

    说明

    • ([^ ]+) 将除空格以外的任何字符捕获一次或多次到捕获组 1
    • · 按字面意思匹配
    • ([^ ]+) 捕获除空格以外的任何字符一次或多次进入捕获组 2

    【讨论】:

    • 谢谢!我马上试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 2012-10-17
    • 2012-09-12
    • 1970-01-01
    • 2019-02-20
    相关资源
    最近更新 更多