クイック スタート
チュートリアル
ツールと言語
リファレンス
書籍レビュー
正規表現ツール
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 スキーマ
Xojo
XQuery と XPath
XRegExp
データベース
MySQL
Oracle
PostgreSQL
このサイトの続き
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷可能な PDF
このサイトについて
RSS フィードとブログ
RegexBuddy—The best regex editor and tester for Groovy developers!

Groovy で正規表現を使用する

Groovy は Java に基づいているので、Groovy で Java の正規表現パッケージ を使用することができます。次の行をimport java.util.regex.*Groovy ソースコードの先頭に配置するだけです。正規表現を使用する Java コードは、Groovy コードでも自動的に動作します。

Verbose Java コードを使用して Groovy で正規表現を処理するのは、あまり Groovy っぽくありません。Groovy には、正規表現を使用するコードをより簡潔にするたくさんの言語機能があります。Groovy 固有の構文と通常の Java コードを組み合わせられます。これらはすべてjava.util.regexパッケージに基づいています。これは必ずインポートする必要があります。

Groovy 文字列

Java では文字列スタイルは 1 つだけです。文字列は二重引用符で囲みます。文字列内の二重引用符とバックスラッシュはバックスラッシュでエスケープする必要があります。リテラル正規表現ではかなりの数のバックスラッシュが使われます。

Groovy には 5 つの文字列スタイルがあります。文字列は、1 つの単一引用符、2 つの二重引用符、3 つの単一引用符、3 つの二重引用符で囲むことができます。3 つの単一引用符または二重引用符を使用すると、文字列を複数行に広げることができます。これは、正規表現のフリースペースに便利です。残念ながら、この 4 つの文字列スタイルのすべてで、バックスラッシュをエスケープする必要があります。

5 つ目の文字列スタイルは、特に正規表現用です。文字列はスラッシュで囲み、文字列内のスラッシュ(バックスラッシュではありません)だけをエスケープする必要があります。これは文字列スタイルです。/hello/"hello"のどちらもjava.lang.Stringのリテラルのインスタンスです。残念ながら、スラッシュで区切られた文字列は複数行にまたがることはできないので、正規表現のフリースペースには使用できません。

Groovy パターンとマッチャー

文字列を正規表現として実際に使用するには、java.util.regex.Patternクラスをインスタンス化します。そのパターンを文字列に対して実際に使用するには、java.util.regex.Matcherクラスをインスタンス化する必要があります。Groovy では、Java の場合と同様にこれらのクラスを使用します。ただし、Groovy には、これらのインスタンスをはるかに少ない入力で作成できる特別な構文があります。

を作成するにはPatternインスタンスでは、正規表現文字列の前にチルダを置くだけで済みます。文字列には Groovy の 5 つの文字列スタイルのいずれでも使用できます。このパターンを変数に割り当てるときは、代入演算子とチルダの間に空白を挿入してください。

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 Enginejava.util.regex package が提供するすべての機能の詳細な概要が必要な場合は、メラン・ハビビによって書かれ、Apress によって発行された「Java Regular Expressions」を入手することをお勧めします。この本では Groovy がまったく話題にされていませんが、Groovy で使用している java.util.regex package に対する最も詳細なガイドです。Groovy は単にいくつかの構文ショートカットを追加しており、すべてがこの Web ページで説明されています。

「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 スキーマ | Xojo | XQuery & Xpath | XRegExp |

| MySQL | Oracle | PostgreSQL |