php regex: lookbehind и предвидение и проблема жадности

Одиночные элементы очень полезны, и использование их не находится в и себя антишаблон. Однако они получили плохую репутацию в основном, потому что они вынуждают любой код потребления подтвердить, что они - одиночный элемент для взаимодействия с ними. Это означает, нужны ли Вам когда-нибудь к "un-Singletonize" они, влияние на Вашу кодовую базу может быть очень значительным.

Вместо этого я предложил бы любое сокрытие Singleton позади фабрики. Тот путь, если необходимо изменить поведение инстанцирования сервиса в будущем, можно просто изменить фабрику, а не все типы, которые используют Singleton.

Еще лучше, используйте инверсию контейнера управления! Большинство из них позволяет Вам разделять поведение инстанцирования от реализации Ваших классов.

5
задан Jared Henderson 13 November 2009 в 21:07
поделиться

2 ответа

Это должно сработать:

(?<=\[p2\]).+?(?=\[\/p2\])

Я добавил вопросительный знак, чтобы квантификатор не был жадным.

5
ответ дан 14 December 2019 в 19:17
поделиться

Вместо использования модификатора регулярного выражения вы можете использовать стандартный модификатор соответствия стиля perl и добавить? после + или *, чтобы указать, что эта конкретная часть не является жадной. Упоминалось выше, но может помочь конкретность.

0
ответ дан 14 December 2019 в 19:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: