このサイトの詳細 |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列チュートリアル |
アプリケーションとプログラミング言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書籍レビュー |
印刷可能なPDF |
このサイトについて |
RSSフィードとブログ |
文字クラスの減算は、XMLスキーマ、XPath、.NET (バージョン 2.0 以降)、およびJGsoft正規表現フレーバーでサポートされています。これにより、あるリスト(文字クラス)に存在するが、別のリスト(減算されたクラス)には存在しない単一の文字に簡単にマッチさせることができます。この構文は次のとおりです。[class-[subtract]]。ハイフンの後の文字が開始括弧である場合、これらのフレーバーはハイフンを範囲演算子ではなく減算演算子として解釈します。減算された文字クラス内では、完全な文字クラス構文を使用できます。
文字クラス[a-z-[aeiuo]]は、母音ではない単一の文字にマッチします。言い換えれば、単一の子音にマッチします。文字クラスの減算または積算なしでこれを行う唯一の方法は、すべての子音をリストすることでした。[b-df-hj-np-tv-z].
文字クラス[\p{Nd}-[^\p{IsThai}]]は、任意の単一のタイ数字にマッチします。ベースクラスは、任意のUnicode数字にマッチします。タイ語以外のすべての文字がそのクラスから減算されます。[\p{Nd}-[\P{IsThai}]]は、同じことを行います。[\p{IsThai}-[^\p{Nd}]]と[\p{IsThai}-[\P{Nd}]]も、タイ文字から非数字をすべて減算することにより、単一のタイ数字にマッチします。
減算された文字クラス内で完全な文字クラス構文を使用できるため、減算されるクラスからクラスを減算できます。[0-9-[0-6-[0-3]]]最初に減算します0-3から0-6、結果[0-9-[4-6]]または[0-37-9]、文字列内の任意の文字にマッチします0123789.
クラスの減算は常に文字クラス内の最後の要素である必要があります。[0-9-[4-6]a-f]は有効な正規表現ではありません。次のように書き換える必要があります。[0-9a-f-[4-6]]。減算はクラス全体に作用します。例えば[\p{Ll}\p{Lu}-[\p{IsBasicLatin}]]は、すべてのUnicode大文字と小文字の文字にマッチしますが、ASCII文字は除きます。\p{IsBasicLatin}は、次の組み合わせから減算されます\p{Ll}\p{Lu}ではなく\p{Lu}単独です。この正規表現はabc.
にマッチしません。ネストされた文字クラスの減算を使用できますが、2つのクラスを連続して減算することはできません。ASCII文字とギリシャ文字を、すべてのUnicode文字を含むクラスから減算するには、ASCII文字とギリシャ文字を1つのクラスに結合して、それを減算します。例:[\p{L}-[\p{IsBasicLatin}\p{IsGreek}]].
文字クラス[^1234-[3456]]は、否定と減算の両方を行います。文字クラスの減算をサポートするすべてのフレーバーでは、ベースクラスは減算される前に否定されます。このクラスは「(1234ではない) マイナス 3456」と読む必要があります。したがって、この文字クラスは、数字の 1、2、3、4、5、および 6 以外の任意の文字にマッチします。
次のような正規表現は[a-z-[aeiuo]]は、文字クラスの減算をサポートしていないほとんどの正規表現フレーバーでエラーを引き起こすことはありません。しかし、意図したとおりに一致することもありません。ほとんどのフレーバーでは、この正規表現は、文字クラスの後にリテラルが続く形式になります。]文字クラスは、範囲 a-z、ハイフン、開始括弧、または母音のいずれかの文字に一致します。a-z範囲と母音は冗長であるため、この文字クラスは次のように記述できます。[a-z-[]または[-[a-z]Perlで。範囲の後のハイフンは、開始括弧の直後のハイフンと同様に、リテラル文字として扱われます。これは、XML、.NET、およびJGsoftフレーバーでも同様です。[a-z-_]これらのフレーバーでは、小文字、ハイフン、またはアンダースコアにマッチします。
厳密に言えば、これは、文字クラスの減算構文がPerlおよび他のほとんどの正規表現フレーバーと互換性がないことを意味します。しかし、実際には違いはありません。文字クラスの範囲で英数字以外の文字を使用するのは、ASCII文字テーブルの文字の順序に依存するため、非常に悪い習慣です。これにより、正規表現が、あなたの作業を引き継いだプログラマーにとって理解しにくくなります。一方[A-[]は、Perlで大文字または開始角括弧に一致しますが、この正規表現は次のように記述するとより明確になります。[A-Z[]。前の正規表現は、XML、.NET、およびJGsoftフレーバーでは、-[]を空の減算されたクラスとして解釈し、[.
| クイック スタート | チュートリアル | ツール & 言語 | 例 | リファレンス | 書籍レビュー |
| はじめに | 目次 | 特殊文字 | 非表示文字 | 正規表現エンジンの内部構造 | 文字クラス | 文字クラスの減算 | 文字クラスの積算 | 省略形の文字クラス | ドット | アンカー | 単語境界 | 選択 | オプション項目 | 繰り返し | グループ化とキャプチャ | 後方参照 | 後方参照、パート2 | 名前付きグループ | 相対後方参照 | ブランチリセットグループ | 自由な空白とコメント | Unicode | モード修飾子 | アトミックグループ | 所有格量指定子 | 先読みと後読み | 先読み/後読み、パート2 | 一致からテキストを除外する | 条件 | バランシンググループ | 再帰 | サブルーチン | 無限再帰 | 再帰と量指定子 | 再帰とキャプチャ | 再帰と後方参照 | 再帰とバックトラック | POSIXブラケット式 | ゼロ長の照合 | 一致の継続 |
ページURL: https://regular-expressions.dokyumento.jp/charclasssubtract.html
ページ最終更新日: 2019年11月22日
サイト最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.