Нахождение правильного php регулярного выражения для этого сложного элемента - PullRequest
1 голос
/ 13 августа 2010

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

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

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 13 августа 2010

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

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