我有这个字符串:我喜欢脾气暴躁的猫。你呢?ффффф ыыыыы ইউটিউব থেকে如果我在正则表达式中使用 \w - 那么我只会得到用拉丁字母写的单词:final text = \'我喜欢脾气暴躁的猫。你呢?ф...
我有这个字符串:
I like grumpy cats. Do you? ффффф ыыыыы ইউটিউব থেকে
如果我 \w
在正则表达式中使用 - 那么我只会得到用拉丁字母写的单词:
final text = "I like grumpy cats. Do you? ффффф ыыыыы ইউটিউব থেকে";
RegExp re = RegExp(r"\w+");
List<String> words = [];
for (Match match in re.allMatches(text)) {
words.add(match.group(0)!);
}
print(words);
输出:
[I, like, grumpy, cats, Do, you]
但我需要这个结果:
[I, like, grumpy, cats, Do, you, ффффф, ыыыыы, ইউটিউব, থেকে]
在 这个 答案中,我发现这 \p{L}
意味着“任何类型的字母,来自任何类型的语言”。但我无法让它在 Flutter/Dart 中工作
您可以将简写字符类分解 \w
为其组成的 Unicode 类别类,并 uncode: true
在 RegExp 构造函数中使用参数:
String text = "I like grumpy cats. Do you? ффффф ыыыыы ইউটিউব থেকে";
RegExp re = new RegExp re = new RegExp(r'[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]+', unicode: true);
List<String?> words = re.allMatches(text).map((z) => z.group(0)).toList();
print(words);
输出:
[I, like, grumpy, cats, Do, you, ффффф, ыыыыы, ইউটিউব, থেকে]
细节 :
unicode: true
在正则表达式模式中启用 Unicode 类别
\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}
- 匹配任何 Unicode 单词字符