本ソフトの検索語の指定には、正規表現が利用できます。
正規表現は、文字列の一部をパターン化して表現するための手法です。特定の単語ではなく、ある条件に一致する単語を表現することができます。DOSのワイルドカードをご存知の方は、その複雑なものと思えばよいでしょう。
本ソフトでは、JAVAの1.4以降に実装された正規表現のクラスを利用して、正規表現による検索を実現しています。
以下、検索に使用する正規表現用の記号と、正規表現用の実例を記載します。JAVAの正規表現に関するドキュメントも参考にして下さい。
JAVAの正規表現用の記号の一覧のうち、検索に関係する記号を紹介します。
特定の一文字を指定する正規表現の記述方法です。
説明 | |
---|---|
x | 文字x (通常の文字列) |
\\ | バックスラッシュ文字 (「\」自身はエスケープ・シーケンスの指定に使うので、「\」を2つ重ねて指定する) |
\t | タブ文字 (\u0009) |
\n | 改行文字 (\u000A) |
\r | キャリッジリターン文字 (\u000D) |
\f | 用紙送り文字 (\u000C) |
\a | 警告 (ベル) 文字 (\u0007) |
\e | エスケープ文字 (\u001B) |
\cx | xに対応する制御文字 |
\0n | 8進値0nを持つ文字 (0 <= n <= 7) |
\0nn | 8進値0nnを持つ文字 (0 <= n <= 7) |
\0mnn | 8進値0mnnを持つ文字 (0 <= m <= 3、0 <= n <= 7) |
\xhh | 16進値0xhhを持つ文字 |
\uhhhh | 16進値0xhhhhを持つ文字 |
複数の文字に合致する(もしくは合致しない)一文字を指定する正規表現の記述方法です。
説明 | ||
---|---|---|
[abc] | a、b、またはc (単純クラス) | [さしすせそ] |
[^abc] | a、b、c以外の文字 (否定) | [^上昇登] |
[a-zA-Z] | a〜z、またはA〜Z (範囲) | [さ-そは-ほ] |
[a-d[m-p]] | a〜d、またはm〜p (結合。[a-dm-p]と同じ) | |
[a-z&&[def]] | d、e、f (交差。a〜zかつ、d、e、fのいずれかの文字) | |
[a-z&&[^bc]] | bとcを除くa〜z (減算。a〜zかつ、b、c以外の文字) | |
[a-z&&[^m-p]] | m〜pを除くa〜z (減算。a〜zかつ、m〜p以外の文字) |
条件が既に定義されている、特定の一文字を指定する正規表現の記述方法です。
説明 | |
---|---|
. | ピリオド。任意の一文字。 (「\n」といった行末記号とマッチする場合もある) |
\d | 0〜9の数字。 ([0-9]と同じ) |
\D | 数字以外。 ([^0-9]と同じ) |
\s | 空白文字。 (スペースや改行、タブ文字など、表示されない文字。[ \t\n\x0B\f\r]と同じ) |
\S | 非空白文字。 ([^\s]と同じ) |
\w | 単語構成文字。 ([a-zA-Z_0-9]と同じ) |
\W | 非単語文字。 ([^\w]と同じ) |
英語に使用される一文字を指定する正規表現の記述方法です。
説明 | |
---|---|
\p{Lower} | 小文字の英字。 ([a-z]と同じ) |
\p{Upper} | 大文字の英字。 ([A-Z]と同じ) |
\p{ASCII} | すべてのASCII文字。 ([\x00-\x7F]と同じ) |
\p{Alpha} | 英字。 ([\p{Lower}\p{Upper}]と同じ) |
\p{Digit} | 10進数字。 ([0-9]と同じ) |
\p{Alnum} | 英数字。 (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ のいずれか) |
\p{Punct} | 句読文字。 ([\p{Alpha}\p{Digit}]と同じ) |
\p{Graph} | 表示できる文字。 ([\p{Alnum}\p{Punct}]と同じ) |
\p{Blank} | 空白またはタブ。 ([ \t]と同じ) |
\p{Cntrl} | 制御文字。 ([\x00-\x1F\x7F]と同じ) |
\p{XDigit} | 16進数字。 ([0-9a-fA-F]と同じ) |
\p{Space} | 空白文字。 ([ \t\n\x0B\f\r]と同じ) |
Unicode文字の領域から一文字を指定する正規表現の記述方法です。
説明 | |
---|---|
\p{InGreek} | ギリシャ語ブロックの文字。 |
\p{Lu} | 大文字 。 |
\p{Sc} | 通貨記号。 |
\P{InGreek} | ギリシャ語ブロック以外の文字。 (否定。[^\p{InGreek}]と同じ) |
[\p{L}&&[^\p{Lu}]] | 大文字以外の文字。 (減算) |
語句や行を分割する境界を指定する正規表現の記述方法です。
説明 | |
---|---|
^ | 行の先頭。 |
$ | 行の末尾。 |
\b | 単語境界。 |
\B | 非単語境界。 |
\A | 入力の先頭。 |
\G | 前回のマッチの末尾。 |
\Z | 最後の行末記号がある場合は、それを除く入力の末尾 |
\z | 最後の行末記号がある場合は、それを除く入力の末尾 |
条件に見合う、最長の文字列を検索する正規表現の記述方法です。
説明 | |
---|---|
X? | Xの文字を0回または1回。 |
X* | Xの文字を0回以上。 |
X+ | Xの文字を1回以上。 |
X{n} | Xの文字をn回。 |
X{n,} | Xの文字をn回以上。 |
X{n,m} | Xの文字をn回以上、m回以下。 |
条件に見合う、最短の文字列を検索する正規表現の記述方法です。
説明 | |
---|---|
X?? | Xの文字を0回または1回。 |
X*? | Xの文字を0回以上。 |
X+? | Xの文字を1回以上。 |
X{n}? | Xの文字をn回。 |
X{n,}? | Xの文字をn回以上。 |
X{n,m}? | Xの文字をn回以上、m回以下。 |
条件に見合う、できるだけ長い文字列を検索する正規表現の記述方法です。
説明 | |
---|---|
X?+ | Xの文字を0回または1回。 |
X*+ | Xの文字を0回以上。 |
X++ | Xの文字を1回以上。 |
X{n}+ | Xの文字をn回。 |
X{n,}+ | Xの文字をn回以上。 |
X{n,m}+ | Xの文字をn回以上、m回以下。 |
表記した文字の前後関係を指定する正規表現の記述方法です。
説明 | |
---|---|
XY | Xの直後にY。 (通常の文字列です) |
X|Y | XまたはY。 |
正規表現を回避して検索をおこなう場合の記述方法です。
説明 | |
---|---|
\ | 正規表現ではないが、次の文字をエスケープする。 |
\Q | 正規表現ではないが、\Eまでのすべての文字をエスケープする。 |
\E | 正規表現ではないが、\Qで開始された引用をエスケープする。 |
実際にいくつかの実例を示し、正規表現の利用方法を紹介します。
例1:火山が爆発.+?。
正規表現で「.」(ピリオド:任意の一文字)、「+?」(プラス、クエスチョン:最短一致数量子で、1つ前の文字を1回以上)を指定。
「火山が爆発する。」「火山が爆発した。」「火山が爆発した時。」といった語句を検索します。
例2:<[Aa] [^>]*>
正規表現で「[Aa]」(Aもしくはa)、「[^>]」(>以外の文字)、「*」(最長一致数量子で、1つ前の文字を0回以上)を指定。
「<A HREF="main.html">」「<a href="main.html" taeget="_blank">」といった語句を検索します。