我想要一个匹配的正则表达式:
ID为
的类型[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]*]*\]
...但它并不匹配所有情况。
答案 0 :(得分:5)
\[[a-zA-Z]+=[a-zA-Z0-9]{24}(@[a-zA-Z]+:[a-zA-Z]+)*\]
^ ^
你用[]封闭了那个部分,如你所知,这是一个课程,你只想要一个分组。您还应确保第一个匹配至少有一个字符,并且似乎id块始终具有24个字符,如果是这种情况,则使用{X}来定义长度为X的重复。
答案 1 :(得分:3)
不应将其他选项分组(而不是括号!)并标记为可选(而不是*)?你应该使用+代替*,否则就会匹配一个空字符串。
\[[a-zA-Z]+=[a-zA-Z0-9]+(@[a-zA-Z]*:[a-zA-Z]*)*\]
答案 2 :(得分:2)
\[[a-zA-Z]+=[a-zA-Z0-9]+(@[a-zA-Z]+:[a-zA-Z]+)*\]
您需要将可选组括在括号中,而不是括号。
答案 3 :(得分:1)
^\[\w+=\w+(@\w+:\w+)*\]$
我想应该可以更具体一些。
答案 4 :(得分:0)
\[[a-zA-Z]+=[a-zA-Z0-9]+(@[a-zA-Z]+:[a-zA-Z]+)?\]
我认为这会好一点:)