Как получить неизвестное слово перед известным с помощью Regex в Stack Overflow

У меня есть этот текст:

andres wins Pot (9.50) with a Full House

и я хочу получить слово «андрес». Это имя игрока (переменная), которое всегда отображается перед словом «выигрывает».

Мне нужно использовать функцию preg_match_all, и я пытаюсь с:

%(?:\S+\s)?\S*wins%

Но это возвращает меня:

andres wins

Мне нужно только, Андрес.

Спасибо !

1

Решение

Используйте группу захвата вместо группы без захвата. Этого должно быть достаточно, чтобы соответствовать предыдущему слову.

(\w+)\s*wins

Вам нужно ссылку $matches[1] вернуть ваш результат матча.

2

Другие решения

(\w+)(?=\s*wins)

Вы также можете использовать это. Захватите совпадение [1]. Это больше не захватит ничего. Смотрите демонстрацию.

http://regex101.com/r/xO7bK2/1

0

По вопросам рекламы [email protected]