0
我有這樣的文字:如何對嵌套標籤進行replaceAll並識別嵌套狀態?
${{stuff${{more stuff}}}}
我想這一點:
data(stuff+data(more stuff))
不是這個:
data(stuffdata(more stuff))
我的代碼:
int flags = Pattern.CASE_INSENSITIVE | Pattern.DOTALL;
Pattern dataPattern = Pattern.compile("\\$\\{\\{(?<DATA>.*?)\\}\\}", flags);
Matcher dataMatcher = dataPattern.matcher("");
String raw = "${{stuff${{more stuff}}}}";
dataMatcher.reset(raw);
String result = dataMatcher.replaceAll("data($1)");
那麼......識別嵌套的sta tus並加上加號?
如果那是什麼嵌套3級深?什麼6級?正則表達式是不是遞歸解析語言,不適合對這個問題的一般情況。您將不得不爲這個語法寫一個真正的(簡單的)解析器。 –
我建議你將「數據」替換爲兩個。一個替換爲「+數據」。 – oyss
否則,用'+ data'替換全部,並刪除第一個'+'字符;) – sp00m