[英]remove paired brackets({},(),[]) and text within it and replace the remaining unpaired with space in a string in Java
我有一些字符串和字符串處理后的預期輸出,
String ab =(abc)def-> def //在刪除配對的方括號和文本后返回字符串。
字符串cd = abc(def-> abc def //用空格替換未配對的括號。
字符串ef = abcdef)-> abcdef //用空格替換未配對的括號。
字符串gh =(abc)def(xyz)-> def //在刪除配對的方括號和文本后返回字符串。
String ij =(((abc)def(xyz))-> empty //返回空字符串,因為成對的括號和其中的文本已刪除。
字符串kl =(abc)def(xyz(abc)-> def xyz // //刪除成對的括號和文本並返回rest。
我需要對提供的字符串進行以下字符串操作。
對於成對的括號(),{},[],括號和其中的文本將被刪除,而未配對的括號必須用空格代替。 我嘗試了許多正則表達式和設置計數器。但是沒有按預期工作。
有任何想法嗎? 提前致謝。
您不能使用Java中的單個正則表達式來解決此任務,因為Java不支持遞歸正則表達式(盡管它們在perl中)。
解決此任務的正確方法-遵循Karthik Jeganathan解決方案-例如,創建簡單的代碼來解析您自己的字符串。
盡管您可以將regex與while循環結合使用以解決此問題。 我必須警告您,這將是非常低效的。 這是代碼:
int previousInputLength = 0;
String input;
while(input.length() != previousInputLength) {
previousInputLength = input.length();
input = input.replaceAll("\\([^()]*\\)", "");
}
input = input.replace("(", " ").replace(")", " ");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.