我試圖從字符串中刪除括號和括號之間的所有非數字字符,例如"hello (a1b2c3) (abc)"
將變爲"hello 123"
。如何使用正則表達式刪除括號/括號之間的所有非數字字符?
我該如何使用正則表達式?
我試圖從字符串中刪除括號和括號之間的所有非數字字符,例如"hello (a1b2c3) (abc)"
將變爲"hello 123"
。如何使用正則表達式刪除括號/括號之間的所有非數字字符?
我該如何使用正則表達式?
按照評論從OP有沒有不平衡或轉義引號。這裏牢記這一點是一個replaceAll
方法調用來實現的是:
String repl = input.replaceAll("(?:\\D(?=[^(]*\\))|\\)\\s*)", "");
//=> hello 123
使用正向前查找,我們發現所有的非數字是使用先行\\D(?=[^(]*\\))
括號內,然後我們刪除)
其次是可選的空間在交替。在一個更復雜的正則表達式,這比刪除多個字符,並沒有認爲這是有關這個問題的一個更大的項目中使用此
多數民衆贊成它,謝謝! – FrankK
您可以使用split
和replaceAll
來實現此目的。
public static void main(String[] args) {
String s = "hel121lo (a1b2c3) (abc)";
String[] arr = s.split("\\s+");
StringJoiner sj = new StringJoiner(" ");
for (String str : arr) {
// System.out.println(str);
if (str.contains("(")) {
String k = str.replaceAll("\\D|\\(|\\)a", "");
sj.add(k);
} else {
sj.add(str);
}
}
System.out.println(sj.toString());
}
O/P:
hel121lo 123
@TheLostMind IM,這是它最終將包含正則表達式((?s)(<| \\ [| \「)。*?(> | \\] | \\}))| \\(| \\)」 – FrankK
我想你可能需要一個解析器,我的原始(錯誤)答案一目瞭然,並且假設你只是想完全刪除括號內的術語 –
是否還有不平衡或轉義的括號? – anubhava