Поиск правильного регулярного выражения php для этого сложного элемента

Я пытаюсь получить регулярное выражение, которое может найти следующую часть в строке.

[TABLE|head,border|{
#TEXT|TEXT|TEXT#
TEXT|TEXT|TEXT
TEXT|TEXT|TEXT
TEXT|TEXT|TEXT
}]

Это из простого самодельного WYSIWYG-редактора, который дает возможность добавить таблицы. Но «синтаксис» для таблицы должен быть таким же простым, как и приведенный выше.

Нет, так как может быть много этих определений таблиц, мне нужно найти все с помощью php preg_match_all, чтобы заменить их на хорошо известные в html.

Регулярное выражение, которое пытается использовать iam, выглядит следующим образом:

/\[TABLE\|(.*)\|\{(.*)\}\]/si

\ x0A остается для перехода на новую строку, так как мое приложение работает в Linux, этого достаточно ( отлично работает с более простым регулярным выражением).

Я использую онлайн-тестер регулярных выражений на functions-online.com .

Совпадения, которые он получает, на самом деле бесполезны. И если у меня есть более одного определения ТАБЛИЦЫ, как указано выше, то совпадения совершенно бесполезны. Из-за (. *) Он охватывает все, начиная с "головы, границы" и заканчивая самой последней "|" символ во втором определении TABLE.

Я хотел бы получить список совпадений, дающий мне полную команду таблицы по одной.

1
задан Gilles 12 March 2012 в 17:21
поделиться

1 ответ

Это потому, что по умолчанию. * Будет жадным совпадением, если ваш код работает правильно для ввода, содержащего только одно значение. Помещение вопросительного знака после двух. * Должно предотвратить проблему жадности.

/\[TABLE\|(.*?)\|\{(.*?)\}\]/si
2
ответ дан 2 September 2019 в 22:11
поделиться
Другие вопросы по тегам:

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