2016-01-24 3 views
2

У меня есть следующее регулярное выражение, я использую его, чтобы разделить буквы и цифры, когда они присоединились:Matching буквы с акцентом

(?<=\p{L})(?=\p{N}) 

asd123 //Match 
وس123 //Match (Right to left) 
وَ123 //No match (The accent is not matched) 

Если буква есть акцент (диакритические), то он не будет соответствовать. Я попытался добавить \p{M}, который ловит диакритические знаки, но я не могу заставить его работать.

+0

[Кажется ОК для меня \ р {М}] (https://dotnetfiddle.net/uQjRyk) – Prix

+0

Да, на самом деле это, но я делал это неправильно. – ykh

+0

Рад, что вы поняли это, но вы хотите удалить номера и сохранить что-нибудь еще, почему бы просто не использовать \ d +? – Prix

ответ

1

Я сделал очень простую ошибку, которая не включает в себя "?" после \p{M}. Без "?" он станет обязательным, а не факультативным, что в моем случае.

(?<=\p{L}\p{M}?)(?=\p{N}) //For single diacritic mark 
(?<=\p{L}\p{M}\p{M}?)(?=\p{N}) //For single double mark (in Arabic) 
Смежные вопросы