我想使用正则表达式将多语言字符串分割成单语标记。使用正则表达式分割多语言字符串到单语标记
例如,对于这个英语 - 阿拉伯语字符串:
“他的名字是محمد,他的母亲的名字是آمنه。”
的结果必须是如下:
- '他的名字是'
- 'محمد'
- '和他的母亲的名字是'
- 'آمنه。'
我想使用正则表达式将多语言字符串分割成单语标记。使用正则表达式分割多语言字符串到单语标记
例如,对于这个英语 - 阿拉伯语字符串:
“他的名字是محمد,他的母亲的名字是آمنه。”
的结果必须是如下:
它并不完美(你一定要尝试一些真实世界的例子,看看它是否适合),但它是一个开始:
splitArray = Regex.Split(subjectString,
@"(?<=\p{IsArabic}) # (if the previous character is Arabic)
[\p{Zs}\p{P}]+ # split on whitespace/punctuation
(?=\p{IsBasicLatin}) # (if the following character is Latin)
| # or
(?<=\p{IsBasicLatin}) # vice versa
[\s\p{P}]+
(?=\p{IsArabic})",
RegexOptions.IgnorePatternWhitespace);
这按空白进行分割/标点符号如果前面字符来自阿拉伯语区块,以下字符来自基本拉丁语区块(反之亦然)。
System.Text.RegularExpressions.Regex regx = new System.Text.RegularExpressions.Regex(@"([\s\(\:]*[a-zA-Z]+[\s\)\:]*)+");
var matchs = regx.Matches(input).Cast<System.Text.RegularExpressions.Match>().ToList();
该表达式省略了所有的阿拉伯数字令牌! – ARZ 2012-04-19 10:10:52
你有什么试过的?你卡在哪里?它总是英语 - 阿拉伯语,或者你至少知道你的字符串中会出现哪些脚本? – 2012-04-16 05:32:32
@TimPietzcker是的,它总是英文 - 阿拉伯文。 – ARZ 2012-04-16 05:38:47