首頁 >Java >java教程 >使用正規表示式從較大的字串中提取被單引號包圍的字串的Java程序

使用正規表示式從較大的字串中提取被單引號包圍的字串的Java程序

PHPz
PHPz轉載
2023-09-16 16:41:021046瀏覽

使用正規表示式從較大的字串中提取被單引號包圍的字串的Java程序

正規表示式或正規表示式是用於模式比對和字串操作的語言。它由定義搜尋模式的字元序列組成,可用於執行搜尋、取代甚至驗證文字輸入等操作。正規表示式由一系列字元和符號組成,這些字元和符號構成了搜尋模式。

在本文中,我們將了解如何編寫一個 Java 程序,以使用正規表示式從較大的字串中提取單引號括起來的字串。

Java 透過 java.util.regex 套件提供對正規表示式的支援。模式類別表示已編譯的正規表示式,而匹配器類別可用於將模式與給定的輸入字串進行匹配。

用單引號括起來的單一子字串

在下面的範例中,我們將首先定義輸入字串以及我們想要匹配的正規表示式模式。模式「(_ ?)」符合單引號和 _*? 部分括起來的任何字元序列。匹配任意字元 0 次或多次,但次數盡可能少,以便模式的其餘部分能夠匹配。

然後,我們根據模式建立一個 Matcher 對象,以 find 方法應用於輸入字串。如果模式匹配,我們使用參數為 1 的 group() 方法來提取匹配的字串,該方法代表模式中的第一個捕獲組。此方法的缺點是它不能捕捉所有單引號括起來的子字串組。

範例

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringExtractor {
   public static void main(String[] args) {
      String input = "This is a 'single quote' enclosed string";
      Pattern pattern = Pattern.compile("'(.*?)'");
      Matcher matcher = pattern.matcher(input);
        
      if (matcher.find()) {
         String extractedString = matcher.group(1);
         System.out.println(extractedString);
      }
   }
}

輸出

single quote

多個單引號括起來的子字串

上述方法有一個主要缺點,就是過於簡單,無法從輸入字串中提取多個單引號括起來的子字串,並且僅提取第一個出現的位置。這是先前方法的更新和高級版本,因為它能夠提取多個事件。我們使用 while 循環來迭代並繼續搜尋匹配項,直到輸入字串中沒有留下匹配項。匹配列表用於存儲所有提取的字串並由該方法返回。 main 方法示範如何使用更新的 extractStringsWithRegex() 方法來擷取所有單引號括起來的字串。

範例

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
public class StringExtractor {    
   public static List<String> extractStringsWithRegex(String input) {
      // This function takes string as input, iterates over to search for regex matches
      // and stores them in a List named matches which is finally returned in the end
      Pattern pattern = Pattern.compile("'(.*?)'");
      Matcher matcher = pattern.matcher(input);
      List<String> matches = new ArrayList<>();
      while (matcher.find()) {
         matches.add(matcher.group(1));
      }
      return matches;
   }   
   public static void main(String[] args) {
      String input = "This is a 'test' string with 'multiple' 'single quote' enclosed 'words'";
      List<String> matches = extractStringsWithRegex(input);
      for (String match : matches) {
         System.out.println(match);
      }
   }
}

輸出

test
multiple
single quote
words

使用正規表示式從較大字串中提取單引號括起來的字串的 java 程式有一些優點和缺點,如下所示。

優點

  • 正規表示式非常強大,可以符合單引號括起來的字串,甚至可以匹配更複雜的模式。

  • Matcher 類別為我們提供了處理匹配字串的附加方法,例如尋找匹配的開始和結束索引。

缺點

  • 與其他方法相比,編寫和理解正規表示式可能更難理解。

  • 與其他方法相比,正規表示式可能會較慢,尤其是對於大型輸入字串或複雜模式。

結論

有多種方法可用來擷取單引號括起來的字串,但最常見的方法是使用正規表示式、split() 和 substring() 方法。正規表示式是強大且靈活的選項,因為它們可以處理複雜的模式,但在非常大的字串中非常耗時。在使用正規表示式時,Pattern 類別用於表示模式,Matcher 類別用於將模式應用於輸入字串,然後提取匹配的文字。正規表示式有多種用例,從驗證使用者輸入資料到操作文字。每當處理正規表示式時,仔細設計和測試模式以確保它與所需的文字匹配並很好地處理所有可能的邊緣情況非常重要。

以上是使用正規表示式從較大的字串中提取被單引號包圍的字串的Java程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除