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

Val*_*Val 3 c# regex globalization unicode arabic

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

Regex.IsMatch("????????", "???????")
Run Code Online (Sandbox Code Playgroud)

我用Google搜索,没有任何结果.

Ahm*_*eed 7

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

澄清,???????是模式,????????是输入.因为我知道阿拉伯语,我可以告诉你,后者确实是前者的部分匹配,所以如果值实际上是逆转的话,结果将是真的.如果您参考此阿拉伯字母表,您可以看到字母yā'(在表格底部)是相同的字母.它的出现取决于它在一个单词中出现的位置.在前一个词中,它出现在最后,而后者则是倒数第二个字母.

当我从帖子中复制/粘贴时,值会反转,从而产生真正的值.为了更好地处理这个问题,我们可以将这些单词拆开以查看两种情况下的预期结果:

string first = "???????";
string second = "????????";
Console.WriteLine(Regex.IsMatch(first, second)); // false
Console.WriteLine(Regex.IsMatch(second, first)); // true
Run Code Online (Sandbox Code Playgroud)