C# 如何在阿拉伯语中提取两个固定字符串之间的数字?

C# 如何在阿拉伯语中提取两个固定字符串之间的数字?,c#,regex,C#,Regex,我有一个字符串,格式如下: 2021年1月31日 我想用一个?性格 并将数字保留在字符串的日期部分 我尝试使用这个正则表达式:?因为不带-s的所需数字是由空格装订的,所以只需使用\s\d+\s即可 由于不带-s的所需数字以空格结尾,因此只需使用\s\d+\s即可 另请参见:我认为问题在于正则表达式和/或输入字符串中存在从右到左的隐藏标记或其他双向控制字符。我尝试了建议的解决方案,并使用了ToggleIDNIRISupport方法,但不起作用。当然,ToggleIDNIRISupport方法不起作

我有一个字符串,格式如下:

2021年1月31日

我想用一个?性格 并将数字保留在字符串的日期部分


我尝试使用这个正则表达式:?因为不带-s的所需数字是由空格装订的,所以只需使用\s\d+\s即可


由于不带-s的所需数字以空格结尾,因此只需使用\s\d+\s即可


另请参见:我认为问题在于正则表达式和/或输入字符串中存在从右到左的隐藏标记或其他双向控制字符。我尝试了建议的解决方案,并使用了ToggleIDNIRISupport方法,但不起作用。当然,ToggleIDNIRISupport方法不起作用;它只适用于与正则表达式无关的URI方法。我建议链接到上面的问题,因为您的问题和该问题中的问题可能有相同的根本原因:使用双向控制字符。阿拉伯字符串可能在代码点方面有所不同,每个字符串中的字符以微妙的方式存在差异。好的。另请参见:我认为问题在于正则表达式和/或输入字符串中存在从右到左的隐藏标记或其他双向控制字符。我尝试了建议的解决方案,并使用了ToggleIDNIRISupport方法,但不起作用。当然,ToggleIDNIRISupport方法不起作用;它只适用于与正则表达式无关的URI方法。我建议链接到上面的问题,因为您的问题和该问题中的问题可能有相同的根本原因:使用双向控制字符。阿拉伯字符串可能在代码点方面有所不同,每个字符串中的字符以微妙的方式存在差异。好的
    e.Row.Cells[3].Text = Regex.Replace(e.Row.Cells[3].Text, "(?<=بقيمة)(.*?)(?=بتاريخ)", "?");
    e.Row.Cells[3].Text = Regex.Replace(e.Row.Cells[3].Text, "(?<=X)(.*?)(?=Y)", "?");
var txt = "خصم بقيمة 108 بتاريخ 12-31-2021";
var pattern = @"\s(\d+)\s";
Console.WriteLine( Regex.Match(txt, pattern).Value ); // 108