Соответствие двум или трем словам после различных шаблонов арабского регулярного выражения в Java - PullRequest
3 голосов
/ 05 июня 2011

Привет всем;

Я новичок в использовании регулярных выражений. То, что я хочу сделать, это извлечь 2 или 3 арабских слова по определенной схеме.

например:

Если у меня есть арабская строка

inputtext = "تكريم الدكتور احمد زويل والدكتورة سميرة موسي عن ابحاثهم العلمية "

Мне нужно извлечь имена после

الدكتور

и

والدكتورة

так что вывод должен быть:

احمد زويل
سميرة موسى

я сделал следующее:

inputtext = "تكريم الدكتور احمد زويل والدكتورة سميرة موسي عن ابحاثهم العلمية "
Pattern pattern = Pattern.compile("(?<=الدكتور).*");
            Matcher matcher = pattern.matcher(inputtext);
            boolean found = false;
            while (matcher.find()) {
                // Get the matching string
                String match = matcher.group();
                System.out.println("the match is: "+match);
                found = true;
            }
            if (!found)
    {
        System.out.println("I didn't found the text");
    }

но возвращается:

احمد زويل والدكتورة سميرة موسي عن ابحاثهم العلمية

Я не знаю, как добавить другой шаблон и как остановиться после 2 слов?

Не могли бы вы помочь мне с любыми идеями?

1 Ответ

2 голосов
/ 05 июня 2011

Чтобы соответствовать только следующим двум словам, попробуйте это:

(?<=الدكتور)\s[^\s]+\s[^\s]+

.* будет соответствовать всему до конца строки, так что это не то, что вы хотите

\s - символ пробела

[^\s] - это группа символов с отрицанием, которая будет соответствовать чему угодно, кроме пробела

Таким образом, мое решение будет соответствовать пробелу, затем, по крайней мере, одному непробелу (первое слово), затем снова пробелу и еще раз, как минимум, одному непробелу (второе слово).

Чтобы соответствовать вашему второму шаблону, я бы просто сделал второе регулярное выражение (просто заменил часть внутри вид сзади) и сопоставил бы этот шаблон на втором шаге. Регулярное выражение легче читать таким образом.

Или вы можете попробовать это

(?<=الدكتور)\s[^\s]+\s[^\s]+|(?<=والدكتورة)\s[^\s]+\s[^\s]+
...