Regex и арабский Tanwin

Я пытаюсь сопоставить слова, полученные из базы данных, в строке ввода, используя VB .NET. Синтаксис, который я использую, настолько прост:

Regex.Matches(ArticleBody, "\b" & TagLabel & "\b", RegexOptions.IgnoreCase)

Где «TagLabel» — это переменная из базы данных, а «ArticleBody» — это пользовательский ввод. Все работает, но есть небольшая проблема:

Предположим, что:

TagLabel = "مصر"
ArticleBody = "لكن الجنرال المدني مصرٌ على الأمل، ولو كان حزيران يشي بالعكس."

Обратите внимание на «Tanwin» в «مصر» в тексте статьи «ٌ» в конце четвертого слова. Функция Regex сопоставляет слово "مصر", хотя не должна. Я уже искал решения, но не нашел.

Пожалуйста, порекомендуйте.


person McHeimech    schedule 26.06.2012    source источник
comment
Насколько мне известно, такие символы (например, ً, ٌ, ٍ,...) НЕ считаются символами слова!   -  person undone    schedule 26.06.2012
comment
Посмотрите на это, это может помочь!   -  person undone    schedule 26.06.2012
comment
@Death Спасибо за ваши комментарии. Вторая ссылка не очень помогла, я пытался заставить ее работать в моем случае, но, к сожалению, это не сработало.   -  person McHeimech    schedule 26.06.2012
comment
Проверьте это: msdn.microsoft.com/en-us/library/ 20bw873z.aspx#CategoryOrBlock   -  person nhahtdh    schedule 26.06.2012


Ответы (1)


Тебе стоит попробовать:

Regex.Matches(ArticleBody, "\b" & TagLabel & "\b", 
  RegexOptions.IgnoreCase | RegexOptions.RightToLeft)

Обновление: попробуйте следующее:

Regex.Matches(ArticleBody, "(?<=(?:\s|^))" & TagLabel & "(?=(?:\s|$))", 
  RegexOptions.IgnoreCase | RegexOptions.RightToLeft)
person Ωmega    schedule 26.06.2012
comment
Спасибо, но я уже пробовал это, и получил тот же результат. - person McHeimech; 26.06.2012