我正在編寫代碼格式化程序,我需要一些幫助。我必須找到代碼塊,我想使用正則表達式。我需要的格式的代碼基本上是這樣的:RegEx查找嵌套的代碼塊
KEYWORD name {
word
word
...
}
我能夠找到下手塊{和結束}這個表達式:
[{](.*?)[}]
但我不知道如何將"KEYWORD name"
部分添加到表達式中。兩者都是自定義字符串,可以包含除;
,{
和}
之外的任何字符。
另一個問題是我的代碼塊可以嵌套。我不知道如何添加該功能。
我不知道你的代碼塊是否可以嵌套,但如果是這樣,你的正則表達式將不起作用。 – Jordi 2010-11-19 09:28:56
哦!你是對的!我還沒有測試過。但它們必須嵌套... – 2010-11-19 09:34:31
只要涉及嵌套(到任意深度),正則表達式就變得很難使用。嚴格地說,嵌套結構不規則,因此不適合與正則表達式匹配。一些現代的正則表達式(例如,PCRE,Perl,.NET)使得遞歸匹配成爲可能,但是Java不在其中。因此,您可能需要爲此作業構建/使用解析器。 – 2010-11-19 10:01:16