この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Pattern と Matcher の使用

Apex には、正規表現を使用してテキストを検索できる Pattern と Matcher があります。

Pattern とは正規表現をコンパイルしたものです。Pattern は、Matcher が文字列に対してマッチ処理を実行するのに使用します。

正規表現とは、特定の構文を使用して他の文字列との一致を探すために使用する文字列です。Apex では、Pattern および Matcher クラスでの正規表現の使用をサポートしています。

Apex では、正規表現と同様に、Pattern と Matcher も Java での動作に基づいています。http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/util/regex/Pattern.html を参照してください。

メモ

次の図に示すように、多くの Matcher オブジェクトは同じ Pattern オブジェクトを共有します。

多くの Matcher は同じ Pattern オブジェクトから作成します。 正規表現から Matcher オブジェクトへの流れを示すフローチャート

Apex の正規表現は、Java で使用される正規表現の標準に従っています。Java ベースのすべての正規表現文字列を簡単に Apex コードにインポートできます。

Salesforce では、正規表現の入力シーケンスにアクセスできる回数を 1,000,000 回に制限しています。その制限に達すると、ランタイムエラーが発生します。

メモ

すべての正規表現は文字列として指定されます。ほとんどの正規表現は、まず Pattern オブジェクトにコンパイルされます。String split メソッドのみがコンパイルされていない正規表現を扱うことができます。

一般的に、正規表現を Pattern オブジェクトにコンパイルすると、Pattern オブジェクトが使用されるのは Matcher オブジェクト作成時の 1 回のみです。その他の処理は Matcher オブジェクトを使用して実行されます。次に例を示します。
1// First, instantiate a new Pattern object "MyPattern"
2Pattern MyPattern = Pattern.compile('a*b');
3
4// Then instantiate a new Matcher object "MyMatcher"
5Matcher MyMatcher = MyPattern.matcher('aaaaab');
6
7// You can use the system static method assert to verify the match
8System.assert(MyMatcher.matches());

正規表現を 1 回のみ使用する場合は、Pattern クラスの matches メソッドを使用すると、表現のコンパイルと文字列に対するマッチ処理を 1 回の呼び出して実行できます。たとえば、次のコードは上記のコードと同一です。

1Boolean Test = Pattern.matches('a*b', 'aaaaab');