クイック スタート
チュートリアル
ツール & 言語
リファレンス
書籍 レビュー
正規表現ツール
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フィード & ブログ

Xojo (REALbasic) で正規表現を使用する方法

かつて REALbasic として知られていた Xojo には、組み込みの RegEx クラスが含まれています。内部的には、このクラスはオープンソースの PCRE ライブラリに基づいています。これは、Xojo 開発者にとって、RegEx クラスが豊富な Perl 互換の正規表現を提供することを意味します。このウェブサイトの正規表現チュートリアルでは、Xojo について明示的に言及していません。チュートリアルで PCRE の正規表現フレーバーについて述べられていることはすべて Xojo にも当てはまります。唯一の例外は、大文字と小文字を区別しない照合モードと「複数行」の照合モードです。PCRE では、これらはデフォルトでオフになっていますが、Xojo ではデフォルトでオンになっています。

Xojo は PCRE の UTF-8 バージョンを使用します。つまり、ファイルやネットワークから取得した非 ASCII データを処理する場合は、Xojo の TextConverter クラスを使用して、文字列を UTF-8 に変換してから RegEx オブジェクトに渡す必要があります。また、TextConverter を使用して、RegEx クラスから返された文字列を UTF-8 からアプリケーションが使用しているエンコーディングに戻す必要があります。

RegEx クラス

正規表現を使用するには、RegEx クラスの新しいインスタンスを作成する必要があります。正規表現を SearchPattern プロパティに割り当てます。RegExOptions クラスのインスタンスである Options プロパティで、さまざまなオプションを設定できます。

正規表現が特定の文字列と一致するかどうかを確認するには、RegEx オブジェクトの Search メソッドを呼び出し、対象文字列をパラメータとして渡します。このメソッドは、一致が見つかった場合は RegExMatch クラスのインスタンスを返し、一致が見つからなかった場合は Nil を返します。同じ対象文字列で 2 番目の一致を見つけるには、パラメータなしで Search メソッドを再度呼び出します。対象文字列を再度渡さないでください。そうすると、文字列の先頭から検索が再開されます。文字列内のすべての正規表現一致を反復処理するには、Nil を返すまでパラメータなしで Search を呼び出し続けます。

RegExMatch クラス

Regex.Search メソッドが一致を見つけると、一致の詳細を RegExMatch オブジェクトに保存します。このオブジェクトには 3 つのプロパティがあります。SubExpressionCount プロパティは、正規表現のキャプチャグループの数に1 を加えた数を返します。たとえば、正規表現(1)(2)の場合、3 を返します。SubExpressionString プロパティは、正規表現またはキャプチャグループによって一致した部分文字列を返します。SubExpressionString(0) は正規表現全体の一致を返し、SubExpressionString(1) から SubExpressionString(SubExpressionCount-1) はキャプチャグループの一致を返します。SubExpressionStartB は、プロパティにパラメータとして渡す数値インデックスに応じて、正規表現全体またはキャプチャグループのいずれかの一致の開始のバイトオフセットを返します。

RegExOptions クラス

RegExOptions クラスには、正規表現のさまざまなオプションを設定するための 9 つのプロパティがあります。

Xojo RegEx ソースコードの例

'Prepare a regular expression object
Dim myRegEx As RegEx
Dim myMatch As RegExMatch
myRegEx = New RegEx
myRegEx.Options.TreatTargetAsOneLine = True
myRegEx.SearchPattern = "regex"
'Pop up all matches one by one
myMatch = myRegEx.Search(SubjectString)
While myMatch <> Nil
	MsgBox(myMatch.SubExpressionString(0))
	myMatch = myRegEx.Search()
Wend

検索と置換

文字列内の正規表現一致を見つけることに加えて、一致を別の文字列に置き換えることもできます。これを行うには、RegEx オブジェクトの ReplacementPattern プロパティを設定してから、Replace メソッドを呼び出します。Replace メソッドにパラメータとしてソース文字列を渡します。このメソッドは、置換が適用された文字列のコピーを返します。RegEx.Options.ReplaceAllMatches プロパティは、最初の正規表現一致のみを置換するか、すべての正規表現一致を置換するかを決定します。

ReplacementPattern 文字列では、$&, $0または\0を使用して、正規表現全体の一致を置換に挿入できます。$1または\1を使用して、最初のキャプチャグループの一致を、$2または\22 番目の一致などを表します。

置換の方法をより詳細に制御する場合は、上記のコードスニペットのように正規表現一致を反復処理し、各一致に対して RegExMatch.Replace メソッドを呼び出すことができます。このメソッドは実際には何も置換しないため、誤った名前が付けられています。代わりに、一致とキャプチャグループへのすべての参照が置換された RegEx.ReplacementPattern 文字列を返します。この結果を使用して、自分で置換を行うことができます。このメソッドは、正規表現一致ごとにキャプチャグループの組み合わせを収集する場合にも役立ちます。

| クイック スタート | チュートリアル | ツール & 言語 |  | リファレンス | 書籍 レビュー |

| 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 |