クイック スタート
チュートリアル
ツール & 言語
リファレンス
書籍 レビュー
正規表現ツール
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フィード & ブログ
RegexBuddy—The best regex editor and tester for XPath developers!

XQueryとXPathの正規表現

XQuery 1.0およびXPath 2.0関数と演算子のW3C標準では、3つの関数が定義されています。fn:matches, fn:replaceおよびfn:tokenize正規表現をパラメータの1つとして受け取ります。 XQueryおよびXPath標準は、この目的のために新しい正規表現フレーバーを導入しています。このフレーバーは、XML Schemaフレーバーと同じですが、XML Schemaフレーバーにはない、多くの最新の正規表現フレーバーで利用可能な機能がいくつか追加されています。すべての有効なXML Schema正規表現は、XQuery/XPath正規表現でも有効です。その逆は必ずしも当てはまりません。

XML Schemaフレーバーは真/偽の妥当性テストにのみ使用されるため、これらの機能はパフォーマンス上の理由から削除されました。 XQueryおよびXPath関数は、より複雑な正規表現演算を実行するため、より機能豊富な正規表現フレーバーが必要です。とは言え、XQueryおよびXPath正規表現フレーバーは、現代の標準によってまだ制限されています。

XQueryとXPathは、XML Schemaフレーバーの機能に加えて、以下の機能をサポートします。

XML Schemaではマッチングモードがまったく許可されていませんが、XQueryおよびXPath関数はすべて、マッチングモードを設定するためのオプションのflagsパラメータを受け入れます。正規表現内のモード修飾子はサポートされていません。次の4つのマッチングモードを使用できます。

フラグは、オンにするモードの文字を含む文字列として指定されます。 例:"ix"大文字と小文字を区別しないことと、フリースペーシングをオンにします。 マッチングモードを設定しない場合は、flagsパラメータに空の文字列を渡すか、パラメータを完全に省略できます。

3つの正規表現関数

fn:matches(subject, pattern, flags)対象の文字列と正規表現を入力として受け取ります。正規表現が対象の文字列のいずれかの部分に一致する場合、関数はtrueを返します。まったく一致しない場合は、falseを返します。正規表現が対象の文字列全体に一致する場合にのみ関数がtrueを返すようにするには、アンカーを使用する必要があります。

fn:replace(subject, pattern, replacement, flags)対象の文字列、正規表現、および置換文字列を入力として受け取ります。正規表現パターンのすべての一致が置換テキストに置き換えられた、対象の文字列である新しい文字列を返します。次を使用できます$1to$99キャプチャグループを置換に再挿入します。$0は、正規表現の一致全体を挿入します。置換内のリテラルのドル記号とバックスラッシュは、バックスラッシュでエスケープする必要があります。

fn:replaceは、長さ0の一致を置き換えることはできません。例えば:fn:replace("test", "^", "prefix")ほとんどのプログラミング言語で正規表現ベースの検索置換が行うように、「prefixtext」を返すのではなく、エラーが発生します。

fn:tokenize(subject, pattern, flags)多くのプログラミング言語の「split」関数に似ています。正規表現の一致の間の対象のすべてのサブストリングで構成される文字列の配列を返します。配列には、正規表現の一致自体は含まれません。正規表現が対象の文字列の最初または最後の文字に一致する場合、結果の配列の最初または最後の文字列は空の文字列になります。

fn:tokenizeも、長さ0の正規表現の一致を処理できません。

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

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