Я пытаюсь использовать ретроспективный просмотр в регулярном выражении, но, похоже, он работает не так, как я ожидал. Итак, это не мое реальное использование, но для упрощения я приведу пример. Представьте, что я хочу сопоставить «пример» со строкой, в которой говорится «это пример». Итак, согласно моему пониманию lookbehind, это должно работать:
(?<=this\sis\san\s*?)example
При этом нужно найти «this is an», затем пробел и наконец найти слово «example». Теперь это не работает, и я не понимаю, почему, невозможно использовать '+' или '*' внутри ретроспективы?
Я тоже пробовал эти два, и они работают правильно, но не соответствуют моим потребностям:
(?<=this\sis\san\s)example
this\sis\san\s*?example
Я использую этот сайт для проверки своих регулярных выражений: http://gskinner.com/RegExr/
example
из этого:this is anexample
. Поэтому, если вы этого не хотите, вам следует удалить?
- person noob   schedule 27.01.2012+
. Удаление?
в этом отношении не имеет никакого эффекта. Но действительно,*?
как квантификатор бесполезен и не нужен в этом случае, так как после этого больше нет пробелов, поэтому\s*?
эквивалентно\s*
. - person Joey   schedule 27.01.2012