Я в порядке с основными регулярными выражениями, но я немного теряюсь из-за взгляда pos / neg впереди / позади.
Я пытаюсь получить идентификатор # из этого:
[keyword stuff=otherstuff id=123 morestuff=stuff]
Там может быть неограниченное количество "вещи" до или после.Я использовал Regex Coach, чтобы помочь отладить то, что я пробовал, но я больше не продвигаюсь вперед ...
Пока у меня есть это:
\[keyword (?:id=([0-9]+))?[^\]]*\]
Чтозаботится о любых дополнительных атрибутах после идентификатора, но я не могу понять, как игнорировать все между ключевым словом и идентификатором.Я знаю, что не могу пойти [^id]*
Я считаю, что мне нужно использовать отрицательный взгляд наподобие этого (?!id)*
, но я предполагаю, что поскольку он имеет нулевую ширину, он не движется вперед оттуда.Это также не работает:
\[keyword[A-z0-9 =]*(?!id)(?:id=([0-9]+))?[^\]]*\]
Я искал примеры, но не нашел ни одного.Или, может быть, у меня есть, но они зашли так далеко, что я даже не осознал, кто они.
Помогите!Спасибо.
РЕДАКТИРОВАТЬ: оно также должно соответствовать [ключевое слово stuff = otherstuff], где id = не существует вообще, поэтому я должен иметь 1 или 0 в группе id #.Есть и другие [otherkeywords id = 32], которым я не хочу соответствовать.Документ должен соответствовать нескольким [ключевое слово id = 3] во всех документах, используя preg_match_all.