Regex для английского и арабского в сочетании - PullRequest
1 голос
/ 24 октября 2019

Как писать регулярные выражения для указанных ниже вариантов использования?

  • Строка содержит хотя бы один арабский символ
  • Строка содержит хотя бы одну арабскую цифру

Мне нужны два отдельных регулярных выражения, так как мне нужно выполнять логику на основе этого.

Это будет использоваться в Java

Tried (\ u0660- \ u0669) и [\ u0600- \ u06ff] | [\ u0750- \ u077f] | [\ ufb50- \ ufc3f] | [\ ufe70- \ ufefc] для проверки наличия арабских символов, но не работает.

1 Ответ

2 голосов
/ 24 октября 2019

Используя Matcher#find(), вы можете сопоставить строки с

String arabic_letter = "[\\p{InArabic}&&\\p{L}]";
String arabic_digit = "[\\p{InArabic}&&\\p{N}]";

Пример:

Pattern p = Pattern.compile(arabic_letter);
Matcher m = p.matcher(your_string);
if (m.find()) {
    // the string contains an Arabic letter
}

Вы также можете использовать регулярное выражение в String#matches с небольшим изменением:

s.matches("(?s).*[\\p{InArabic}&&\\p{L}].*")
s.matches("(?s)[^\\p{InArabic}&&\\p{L}]*[\\p{InArabic}&&\\p{L}].*")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...