Java正則表達式如何精準提取中括號內外文本?

Java正則表達式如何精準提取中括號內外文本?

Java字符串處理:巧妙提取中括號內外文本

在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
喜歡就支持一下吧
點贊7 分享