, Есть также некоторые рекурсивные тесты, в которых вы не используете обратную косую черту, чтобы говорить о группе. Именованные группы превосходят нумерованные.

лупого парсера bbcode я хотел добавить два определения в одно, мое первоначальное определение было для preg_replace:

'#\[s\](.*?)\[/s\]#si', '<strike>\\1</strike>'

И это работает, я хотел, чтобы пользователь мог использовать либо[s]&nbsp;или же[strike]&nbsp;чтобы начать текст в этом формате, поэтому я, естественно, добавил что-то вроде этого, думая, что это будет работать:

'#\[(s|strike)\](.*?)\[/(s|strike)\]#si', '<strike>\\1</strike>'

К сожалению, это не так, как вы ожидаете, оба[s]&nbsp;а также[strike]&nbsp;(используется правильно) сделать:s&nbsp;а такжеstrike&nbsp;(моя уценка верна, чтобы показать ее реальный результат, она показывает s или удар независимо от того, что внутри)

Почему он заменяет внутренний текст именем тега? Неужели мои добавления скобок вокруг s | удаляют проблему? Я, вероятно, делаю все это неправильно ..