Параметр RightToLeft
относится к порядку в последовательности символов, который принимает регулярное выражение, и должен действительно называться LastToFirst
, поскольку в случае иврита и арабского языка он фактически слева направо и со смешанным Текст RLT и LTR, такой как вы описываете выражение «справа налево», еще менее уместен.
Это незначительно влияет на скорость (будет иметь значение только в том случае, если искомый текст массивный) и на регулярные выражения, которые выполняются с индексом startAt
(поиск в начале строки, чем startAt
, а не позже в строка).
Примеры; будем надеяться, что браузеры не слишком запутают это:
string saying = "למכות is in כתר"; //Just because it amuses me that this is a saying whatever way round the browser puts malkuth and kether.
string kether = "כתר";
Console.WriteLine(new Regex(kether, RegexOptions.RightToLeft).IsMatch(saying));//True
Console.WriteLine(new Regex(kether, RegexOptions.None).IsMatch(saying));//True, perhaps minutely faster but so little that noise would hide it.
Console.WriteLine(new Regex(kether, RegexOptions.RightToLeft).IsMatch(saying, 2));//False
Console.WriteLine(new Regex(kether, RegexOptions.None).IsMatch(saying, 2));//True
//And to show that the ordering is codepoint rather than physical display ordering:
Console.WriteLine(new Regex("" + kether[0] + ".*" + kether[2]).IsMatch(saying));//True
Console.WriteLine(new Regex("" + kether[2] + ".*" + kether[0]).IsMatch(saying));//False