Регулярные выражения (будут пытаться) сопоставлять шаблоны слева направо. Если вы хотите убедиться, что сначала получите самое длинное совпадение, вам нужно будет изменить порядок ваших шаблонов. Сначала обрабатывается самый левый шаблон. Если совпадение найдено против этого шаблона, механизм регулярных выражений будет пытаться сопоставить остальную часть шаблона с остальной частью строки; следующий шаблон будет проверяться только в том случае, если совпадение не найдено.
String pattern = ("(hello world|hello wor|hello)");