我目前正在爲我的程序開發解析器。解析器解析類似於JSON的代碼,但我想遠離使用JSON解析器。我必須使用自己的解析器而不是第三方解析器。它使用大括號來包圍「集合」。正則表達式在大括號之間獲取文本
這是我目前正在使用的正則表達式代碼。
\\{(\\s*)+(.*?)(\\s*)+\\}
一個例子輸入和輸出是:
輸入:{value, value2}
輸出:value, value2
現在,這個工作正常,但當我想提出的另一組輸入:
輸入:{value, {value2}}
輸出:value, {value2 }<-Outermost curly bracket
最外花括號被留下,因爲從嵌入組右大托架成爲圖案的一部分。
我也希望能夠把其他組輸入:
輸入:{value, value2} {value3, value4}
(通緝)輸出:value, value2 value3, value4
這使得在正則表達式的結尾使用$
實際無用。
這個'{(\ s *)+(。*?)(\ s *)+}'是一個不好的方法。如果dot-all標誌被設置,那麼'\ s'是多餘的。如果dot-all標誌設置爲_NOT_,那麼這個'。*?'將只允許1行,然後它需要可選的空格,然後是'}'。除非你只想匹配1行,否則這種做法會失敗。 – sln
Java中的正則表達式不支持遞歸,因此您不能使用它來解析嵌套結構。 – Pshemo
使用本地Java語言遞歸函數調用,維護自己的大括號計數。 Java中的正則表達式是不可能的。請求升級。 – sln