在Java開發中,經常需要從字符串中提取特定部分。本文提供一種高效的方法,從包含中括號的字符串中,分別提取中括號之前和中括號內部的文本,即使中括號前文本長度不固定也能輕松應對。
例如,對于字符串 “test[10000]”,我們需要分別提取 “test” 和 “10000”。 簡單的字符串截取方法難以處理中括號前文本長度不確定的情況。這時,正則表達式是理想的解決方案。
以下Java代碼片段利用正則表達式 (.+)[(.+)] 實現了這一目標:
立即學習“Java免費學習筆記(深入)”;
import java.util.regex.*; public class ExtractBracketText { public static void main(String[] args) { Pattern pattern = Pattern.compile("(.+)[(.+)]", Pattern.DOTALL); String[] testStrings = { "aaaaaaa[bbbbbbb]", "測試測試[文本文本]", "2321]][2312[231231]" // 測試用例,包含非完全匹配的情況 }; for (String testString : testStrings) { Matcher matcher = pattern.matcher(testString); if (matcher.matches()) { System.out.println(String.format("原始字符串: %s, 中括號前: %s, 中括號內: %s", testString, matcher.group(1), matcher.group(2))); } else { System.out.println(String.format("原始字符串: %s, 不匹配", testString)); } } } }
代碼中,(.+) 匹配一個或多個任意字符(中括號前的部分),[ 匹配左中括號(需要轉義),(.+) 匹配中括號內的任意字符,] 匹配右中括號(需要轉義)。Pattern.DOTALL 選項確保 . 可以匹配換行符。matches() 方法嘗試將整個字符串與正則表達式匹配。匹配成功后,matcher.group(1) 獲取第一個捕獲組(中括號前的文本),matcher.group(2) 獲取第二個捕獲組(中括號內的文本)。 多個測試用例確保了代碼的魯棒性。 該方法能夠靈活地處理各種情況,完美解決中括號前文本長度不固定問題。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END