为什么这个正则表达式返回 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/