例如:
String s = "1/14/2017".replaceAll("^(\\d{1,2})/(\\d{1,2})/", "$2/$1/");
此 Java 代碼將切換“1”和“14”的位置。
但我想要的形式如下,不幸的是Java不支持這種形式
String s = "1/14/2017".replaceAll("^(\\d{1,2})/(\\d{1,2})/", "\2/\1/");
有沒有其他工具可以支持這種形式?
uj5u.com熱心網友回復:
你不能那樣做。盡管它沒有back references被正則運算式引擎處理,但它首先是字串中字符編碼的一個特征。
如果引擎支持它,則需要將其編碼為\\\\2/\\\\1/(或真正的丑陋的\\\62\\\61),因為\它是 String 轉義字符,后面的內容被視為原始輸入。所以System.out.println("\101")會列印這封信A。
但是引擎不支持上述替代編碼,因為替換模式被認為只是一個字串,"\2/\1/"它不是你想要的。
我會想象$選擇它是因為它在正則運算式之外沒有特殊含義,并且是一種比轉義反斜杠更容易編碼反向參考指示符的方法。但我沒有證據支持這種推理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492605.html
