使用正则表达式在Embarcadero的C++生成器中将文本拆分为单个单词
Using RegEx to split up a text into single words in Embarcadero's C++ Builder
我正在使用Embarcadero的c++ Builder开发一个拼写检查程序。我使用正则表达式将文本拆分为单个单词。下面的代码在RAD Studio XE中工作得很好,但在RAD Studio Seattle中表现不一样。
当单词包含非拉丁字符,如德语Umlauts (Ä,Ö,Ü)或带有重音字符(
首先,在我的上下文中什么是单词?可能的单词包括:
" r n "
" word-word-word-word……"
"word."或"word-"
apostrophs的话:"字"磨破会"字"
" "
有两种不同类型的撇号:'和'
代码如下:
String text (L"Österreich l'année);
const String sRegex (L"rn|(\w+\-)+\w+|\w+(\.|\-)|('|’)?\w+('|’)?\w*");
TRegEx regex(sRegex, TRegExOptions());
TMatchCollection regexMatches = regex.Matches(text);
for (int i=0; i<regexMatches.Count; ++i)
{
TMatch regexMatch = regexMatches.Item[i];
String word (regexMatch.Value);
//do stuff with word
}
String字的期望值是"Österreich"answers"l' annacei "。然而,RegEx匹配的是"sterreich", "l'ann"answers"e"。
我的问题是,如何指定所有非拉丁字符?
p{L}
匹配unicode字母。试试用这个代替w
。
请参阅regex101。
如果您想要数字以及(与w
)添加d
到组
相关文章:
- 文本文件中的单词链表
- 将英文文本拆分为多个行
- 如何在Qt文本阅读中拆分t
- 如何使用 c++ 逐行处理文本文件并将其参数拆分为变量?
- 如何将文本(诗歌)拆分为行(字符串/字符[])并查找每个行的最后一个单词
- 使用 C++ boost::split 拆分字符串,而不在引号文本内拆分
- 分析示例文本文件并将其拆分
- 如何将XML文件拆分为多个XML,以便每个新文件只包含原始文件中的一个文本节点
- 正在分析文本文件并从中拆分
- 拆分和合并文本
- 将文本输入中的字符串拆分为更小的字符串
- c++如何将文本文件中的一行拆分为两行,然后将每行存储到两个不同的数组中
- 将大型数据文件拆分为多个小文件(文本格式)
- 将文本文件拆分为多个文件 c++
- 通过使用分隔符C++拆分文本来制作 2D 数组
- 将单独文本文件的段落拆分为单独的字符串
- 当找到某个令牌时,是否有更快的方法来拆分文本文件
- 如何从文本文件中读取并在C中拆分句子
- 使用正则表达式在Embarcadero的C++生成器中将文本拆分为单个单词
- 使用ICU将文本拆分为单词列表