Чтобы соответствовать только следующим двум словам, попробуйте это:
(?<=الدكتور)\s[^\s]+\s[^\s]+
.*
будет соответствовать всему до конца строки, так что это не то, что вы хотите
\s
- символ пробела
[^\s]
- это группа символов с отрицанием, которая будет соответствовать чему угодно, кроме пробела
Таким образом, мое решение будет соответствовать пробелу, затем, по крайней мере, одному непробелу (первое слово), затем снова пробелу и еще раз, как минимум, одному непробелу (второе слово).
Чтобы соответствовать вашему второму шаблону, я бы просто сделал второе регулярное выражение (просто заменил часть внутри вид сзади) и сопоставил бы этот шаблон на втором шаге. Регулярное выражение легче читать таким образом.
Или вы можете попробовать это
(?<=الدكتور)\s[^\s]+\s[^\s]+|(?<=والدكتورة)\s[^\s]+\s[^\s]+