Проблема с регулярным выражением - PullRequest
2 голосов
/ 09 февраля 2010

Я хочу регулярное выражение, которое будет соответствовать:

Тип с идентификатором:

[Image=4b5da003ee133e8368000002]
[Video=679hfpam9v56dh800khfdd32]

С дополнительными параметрами от 0 до n, разделенными @:

[Image=4b5da003ee133e8368000002@size:small]
[Image=4b5da003ee133e8368000002@size:small@media:true]

Пока у меня есть это:

\[[a-zA-Z]*=[a-zA-Z0-9]*[@[a-zA-Z]*:[a-zA-Z]*]*\]

... но это не соответствует всем случаям.

Ответы [ 5 ]

5 голосов
/ 09 февраля 2010
\[[a-zA-Z]+=[a-zA-Z0-9]{24}(@[a-zA-Z]+:[a-zA-Z]+)*\]
                           ^                    ^

Вы заключили этот раздел в [], который, как вы знаете, предназначен для класса, вам просто нужна группировка. Вы также должны убедиться, что в первом совпадении есть хотя бы один символ, и кажется, что в блоке id всегда есть 24 символа, если это так, используйте {X} для определения повторения длины X.

3 голосов
/ 09 февраля 2010

Не следует ли сгруппировать дополнительные параметры (вместо скобок!) И отметить их как необязательные (вместо *)? И вы должны использовать + вместо *, иначе будет найдена пустая строка.

\[[a-zA-Z]+=[a-zA-Z0-9]+(@[a-zA-Z]*:[a-zA-Z]*)*\]
2 голосов
/ 09 февраля 2010
\[[a-zA-Z]+=[a-zA-Z0-9]+(@[a-zA-Z]+:[a-zA-Z]+)*\]

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

1 голос
/ 09 февраля 2010
^\[\w+=\w+(@\w+:\w+)*\]$

Полагаю, можно быть более конкретным.

0 голосов
/ 09 февраля 2010
\[[a-zA-Z]+=[a-zA-Z0-9]+(@[a-zA-Z]+:[a-zA-Z]+)?\]

Я думаю, что это будет немного лучше:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...