这确实有效,但其中一些失败:
*/plain
text/-vnd.MS.office-document.WORD+xml-
text/-vnd.MS.office_document.WORD+xml.
text/.vnd.MS.office_document.WORD+xml-
text/.vnd.MS.office-document.WORD+xml.
text/-api-format
text/.api.format
text/.api-format
text/-api.format
text/api-format-
text/api.format.+json
text/api-for_mat.
text/api.format-+json
text/api.-for_mat
text/api-.format+json
正则表达式不得与上述字符串匹配。
但必须匹配以下字符串
*/*
text/*
image/jpg
image/x.apng+png
image/x-jpg2000+jpg
text/api.format
text/api-format+json
text/prs.NIRIN.config+xml
text/vnd.MS.office-document.WORD+xml
我是Regex的新手,但我想出了这个:
^(?<Base>application|audio|example|image|message|model|multipart|text|video)/(?<Extension>prs\.|vnd\.|x\.|x-)?(?<Sub>[\w-[_]]+(?:[.-]?[\w-[_]]+)*)+(?:\+(?<Super>[\w-[_]]+))?$
但它只匹配一个子集并匹配不匹配!!
但我想这样:
Base: *, <any of the above 'Base'>
Extension: prs. , vnd. , x. , x- <legacy types, optional>
Sub: MS.office-document.WORD <if it contains nested types like this>
Capture 1: MS
Capture 2: office-document
Capture 2: WORD
Super: xml <optional, rules same as 'Base' types and captures of 'Sub'>
我在这里做错了吗?
会不会太复杂?
即使提出规则,我们还可以进一步简化吗?
注意:这是
.net
风格的正则表达式。所以我们也可以使用.net
特定功能!
感谢。