c# - 为什么这个正则表达式返回真?

标签 c# regex unicode globalization arabic

为什么这个正则表达式返回 true?

Regex.IsMatch("العسكرية", "العسكري")

我用谷歌搜索,但没有找到任何结果。

最佳答案

我怀疑您发布的内容实际上是颠倒的,其中较短的文本实际上是模式,而较长的输入是匹配的输入。在这种情况下,这将返回 true,因为模式匹配除单词中最后一个字母以外的所有内容。

澄清一下,العسكري 是模式,العسكرية 是输入。因为我懂阿拉伯语,所以我可以告诉你,后者确实是前者的部分匹配,所以如果值实际上被颠倒了,结果将是正确的。如果你引用this table of Arabic alphabets , 你可以看到字母 yā’ (在表格的底部)是同一个字母。它的出现取决于它在单词中出现的位置。前者出现在末尾,后者出现在倒数第二个字母。

当我从您的帖子中复制/粘贴时,值会反转,从而产生一个真实的值。为了更好地使用它,我们可以将单词分开以查看两种情况下的预期结果:

string first = "العسكري";
string second = "العسكرية";
Console.WriteLine(Regex.IsMatch(first, second)); // false
Console.WriteLine(Regex.IsMatch(second, first)); // true

关于c# - 为什么这个正则表达式返回真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9794858/

相关文章:

c# - 如何使用 C# 在远程机器上启动/停止进程?

c# - 简单的正则表达式 - 如何 reshape url

javascript - 正则表达式阻止连续 4 次以上包含相同数字的电话号码?

Javascript 正则表达式字符范围 A-z 匹配插入符 ("^")

android - Unicode 字符回退?

python - 如何在 pygame 中在屏幕顶部显示分数?

python - python 中的字符串格式 % 如何与 unicode 一起使用?

c# - 从内部派生的公共(public)接口(interface)?

c# - PDF 的目录打印正确,但 RTF 的目录打印不正确

c# - 选择组合框时的事件