快速入門
教學
工具和語言
範例
參考
書籍評論
正規表示式工具
grep
PowerGREP
RegexBuddy
RegexMagic
一般應用程式
EditPad Lite
EditPad Pro
語言和函式庫
Boost
Delphi
GNU (Linux)
Groovy
Java
JavaScript
.NET
PCRE (C/C++)
PCRE2 (C/C++)
Perl
PHP
POSIX
PowerShell
Python
R
Ruby
std::regex
Tcl
VBScript
Visual Basic 6
wxWidgets
XML Schema
Xojo
XQuery 和 XPath
XRegExp
資料庫
MySQL
Oracle
PostgreSQL
本網站的更多內容
簡介
正規表示式快速入門
正規表示式教學
替換字串教學
應用程式和語言
正規表示式範例
正規表示式參考
替換字串參考
書籍評論
可列印 PDF
關於本網站
RSS Feed 和部落格
RegexBuddy—The best regex editor and tester for Groovy developers!

在 Groovy 中使用正規表示式

由於 Groovy 是基於 Java,因此您可以在 Groovy 中使用 Java 的正規表示式套件。只要在 Groovy 原始碼的最上方加上 import java.util.regex.*。使用正規表示式的任何 Java 程式碼也會自動在您的 Groovy 程式碼中運作。

使用冗長的 Java 程式碼在 Groovy 中處理正規表示式並不會很 groovy。Groovy 有一堆語言功能,可以讓使用正規表示式的程式碼簡潔許多。您可以將 Groovy 專屬語法與一般的 Java 程式碼混合使用。所有內容都基於 java.util.regex 套件,您無論如何都需要匯入這個套件。

Groovy 字串

Java 只有單一字串樣式。字串置於雙引號之間。字串中的雙引號和反斜線必須以反斜線作為跳脫字元。這會在正規表示式文字中產生一大堆反斜線。

Groovy 有五種字串樣式。字串可以置於單引號、雙引號、三重單引號和三重雙引號之間。使用三重單引號或雙引號可以讓字串跨越多行,這對於自由間距的正規表示式非常方便。遺憾的是,這四種字串樣式都需要反斜線作為跳脫字元。

第五種字串樣式特別提供給正規表示式。字串置於正斜線之間,且字串中的正斜線(而非反斜線)才需要跳脫。這的確是一種字串樣式。/hello/"hello" 都是 java.lang.String 的字面實例。遺憾的是,以正斜線分隔的字串無法跨行,因此無法將其用於自由間距的正規表示式。

Groovy 模式和比對器

若要實際將字串用作正規表示式,您需要實例化 java.util.regex.Pattern 類別。若要實際對字串使用該模式,您需要實例化 java.util.regex.Matcher 類別。您在 Groovy 中使用這些類別的方式與在 Java 中相同。但 Groovy 提供了一些特殊語法,讓您可以用更少的輸入建立這些實例。

若要建立 Pattern 實例,只需在包含正規表示式的字串前面加上波浪號。字串可以使用 Groovy 的五種字串樣式中的任何一種。將此模式指派給變數時,請務必在指定運算子與波浪號之間留一個空格。

Pattern myRegex = ~/regex/

您實際上不會經常以這種方式實例化模式。您唯一需要 Pattern 實例的時候是分割字串,這需要您呼叫 Pattern.split()。若要尋找正規表示式比對或使用正規表示式進行搜尋和取代,您需要一個 Matcher 實例,將模式繫結到字串。在 Groovy 中,您可以使用 =~ 運算子直接從包含正規表示式的字面字串建立此實例。這次 =~ 之間沒有空格。

Matcher myMatcher = "subject" =~ /regex/

這是

Matcher myMatcher = Pattern.compile(/regex/).matcher("subject")

最後,==~ 運算子是測試正規表示式是否能完全比對字串的快速方式。myString ==~ /regex/ 等同於 myString.matches(/regex/)。若要尋找部分比對,您需要使用 Matcher

進一步閱讀

Java Regular Expressions - Taming the java.util.regex Engine如果您想要更詳細瞭解 java.util.regex 套件提供的所有功能,您可能想要取得 Mehran Habibi 編寫、Apress 出版的「Java Regular Expressions」一書。儘管這本書完全沒有提到 Groovy,但它是 java.util.regex 套件最詳細的指南,而這正是您在 Groovy 中使用的套件。Groovy 僅增加了一些語法捷徑,這些捷徑都已在此網頁中說明。

我對 Java Regular Expressions 一書的評論

| 快速入門 | 教學 | 工具和語言 | 範例 | 參考 | 書籍評論 |

| grep | PowerGREP | RegexBuddy | RegexMagic |

| EditPad Lite | EditPad Pro |

| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML Schema | Xojo | XQuery & XPath | XRegExp |

| MySQL | Oracle | PostgreSQL |