gpt4 book ai didi

c++ - 正则表达式 - 删除一行(英文)并将其附加到上一行的末尾(韩文)

转载 作者:搜寻专家 更新时间:2023-10-31 01:27:38 33 4
gpt4 key购买 nike

我有如下文字:

아니다
bukan

싫다
tidak suka

훌륭하다
bagus

我正在尝试删除英文行(英文字母)并将其附加到上行(韩文字母)的末尾,如下所示:

아니다bukan

싫다tidak suka

훌륭하다bagus

现在,终于找到几乎接近的正则表达式,它是这样的:

[가-힣]\R

但是,它生成的文本文件是这样的:

아니bukan

싫tidak suka

훌륭하bagus

问题是也删除了韩语中的一个词。

我该如何解决这个问题?

最佳答案

C++ std::regex 不支持像 \p{Hangul} 这样的 Unicode 属性类,但是你可以使用等效的字符类,[\u1100 -\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC],参见this reference .

此外,\R 也不支持。您可能只使用 \r?\n 来匹配 Windows/Linux 样式的行尾,或者使用 (?:\r\n?|\n) 来支持 MacOS行尾。

接下来,如果您匹配并使用韩文字符,则在替换时,您需要将其捕获到一个捕获组中,并在替换模式中使用对该组的反向引用。

所以,你可以使用

([\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC])(?:\r\n?|\n)

替换为 $1 以将韩文字符放回生成的字符串中。

参见 regex demo online .

关于c++ - 正则表达式 - 删除一行(英文)并将其附加到上一行的末尾(韩文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53201855/

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