Упреждающее выражение с регулярным выражением

Я использую регулярное выражение, чтобы найти:

test:?

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

test:?

Теперь, когда я запускаю это регулярное выражение, я сделал:

((?:test:\?)(.*)(?!test:\?))

В этом тексте:

test:?foo2=bar2&baz2=foo2test:?foo=bar&baz=footest:?foo2=bar2&baz2=foo2

Я ожидал получить:

test:?foo2=bar2&baz2=foo2

test:?foo=bar&baz=foo

test:?foo2=bar2&baz2=foo2

Но вместо этого он соответствует всему. Кто-нибудь с большим опытом работы с регулярными выражениями знает, где я ошибся? Раньше я использовал регулярные выражения для сопоставления с образцом, но это мой первый опыт поиска и прогнозирования.

Заранее благодарим за любую помощь / советы / подсказки: -)

5
задан tchrist 29 August 2012 в 11:29
поделиться