gpt4 book ai didi

c++ - 将句子拆分为包含撇号的单词

转载 作者:行者123 更新时间:2023-12-02 09:49:37 24 4
gpt4 key购买 nike

假设我有一组单词作为这样的句子:

Aujourd'hui séparer l'élément en deux



并希望结果作为单个单词(拆分后):

Aujourd'hui | séparer | l' | élément | en | deux



注意:如您所见,是一个单词aujourd'hui。

在这里使用的最佳正则表达式是什么?

以我目前的知识,我所能实现的就是这个基本操作:
QString sentence("Aujourd'hui séparer l'élément en deux");
QStringList list = sentence.split(" ");

输出:
Aujourd'hui / Séparer / l'élément / en / deux

这是最接近我的两个问题: thisthis

最佳答案

由于您想将其视为单独单词的紧缩通常是单个字母+法语中的撇号(例如l'huilen'end'accord),因此您可以使用匹配1+个空白字符或紧随其后的位置的模式一个单词的开头,然后是1个字母,然后是撇号。

我还建议考虑 curl 撇号。所以用

 \s+|(?<=\b\p{L}['’])\b

参见 regex demo

详细信息
  • \s+-1+空格
  • |-或
  • (?<=\b\p{L}['’])\b-单词边界(\b)的位置,该位置之前有单词的开头(\b),字母(\p{L})和'

  • 在Qt中,您可以使用
    QStringList result = text.split(
    QRegularExpression(R"(\s+|(?<=\b\p{L}['’])\b)",
    QRegularExpression::PatternOption::UseUnicodePropertiesOption)
    );
    R"(...)"是原始字符串文字表示法,如果使用的C++环境不允许使用原始字符串文字,则可以使用 "\\s+|(?<=\\b\\p{L}['’])\\b"

    关于c++ - 将句子拆分为包含撇号的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289339/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com