給定乙個表示**片段的字串,你需要實現乙個驗證器來解析這段**,並返回它是否合法。合法的**片段需要遵守以下的所有規則:
**必須被合法的閉合標籤包圍。否則,**是無效的。
閉合標籤(不一定合法)要嚴格符合格式:tag_content
。其中,是起始標籤,
是結束標籤。起始和結束標籤中的 tag_name 應當相同。當且僅當 tag_name 和 tag_content 都是合法的,閉合標籤才是合法的。
合法的tag_name
僅含有大寫字母,長度在範圍 [1,9] 之間。否則,該tag_name
是不合法的。
合法的tag_content
可以包含其他合法的閉合標籤,cdata(請參考規則7)和任意字元(注意參考規則1)除了不匹配的<
、不匹配的起始和結束標籤、不匹配的或帶有不合法 tag_name 的閉合標籤。否則,tag_content
是不合法的。
乙個起始標籤,如果沒有具有相同 tag_name 的結束標籤與之匹配,是不合法的。反之亦然。不過,你也需要考慮標籤巢狀的問題。
乙個<
,如果你找不到乙個後續的>
與之匹配,是不合法的。並且當你找到乙個<
或的前的字元,都應當被解析為 tag_name(不一定合法)。
cdata 有如下格式:。
cdata_content
的範圍被定義成之間的字元。
cdata_content
可以包含任意字元。cdata 的功能是阻止驗證器解析cdata_content
,所以即使其中有一些字元可以被解析為標籤(無論合法還是不合法),也應該將它們視為常規字元。
合法**的例子:
輸入: "this is the first line ]]>
"輸出: true
解釋:
**被包含在了閉合的標籤內: 和
。tag_name 是合法的,tag_content 包含了一些字元和 cdata 。
即使 cdata_content 含有不匹配的起始標籤和不合法的 tag_name,它應該被視為普通的文字,而不是標籤。
所以 tag_content 是合法的,因此**是合法的。最終返回true。
輸入: ">> ![cdata] ]>]]>]]>>]
"輸出: true
解釋:我們首先將**分割為: start_tag|tag_content|end_tag 。
start_tag -> ""
end_tag -> "
"tag_content 也可被分割為: text1|cdata|text2 。
text1 -> ">> ![cdata] "
cdata -> "]>]]>" ,其中 cdata_content 為 "]>"
text2 -> "]]>>]"
start_tag 不是 ">>" 的原因參照規則 6 。
cdata 不是 "]>]]>]]>" 的原因參照規則 7 。
不合法**的例子:
輸入: ""
輸出: false
解釋: 不合法。如果 "" 是閉合的,那麼 "" 一定是不匹配的,反之亦然。
輸入: "div tag is not closed "
輸出: false
輸入: "unmatched <
"輸出: false
輸入: "closed tags with invalid tag name123
"輸出: false
輸入: "unmatched tags with invalid tag name and
"輸出: false
輸入: "unmatched start tagand unmatched end tag
"輸出: false
注意:
為簡明起見,你可以假設輸入的**(包括提到的任意字元)只包含數字
, 字母,'<'
,'>'
,'/'
,'!'
,'['
,']'
和' '
。
shiro許可權驗證標籤
例項 spring shiro.xml 1 2 3 admin repairtype index roles role admin admin user roles role admin admin complaint list roles role service,role admin jsp頁面...
shiro許可權驗證標籤
例項 spring shiro.xml 1 2 3 admin repairtype index roles role admin admin user roles role admin admin complaint list roles role service,role admin jsp頁面...
shiro許可權驗證標籤
例項 spring shiro.xml 1 2 3 admin repairtype index roles role admin admin user roles role admin admin complaint list roles role service,role admin jsp頁面...