Show/Hide Toolbars

EmEditor ヘルプ

ナビゲーション: EmEditor ヘルプ > 使い方 > 検索

EmEditor 使い方: 正規表現構文

Scroll 前へ 上へ 次へ その他
EmEditor ホーム - EmEditor ヘルプ - 使い方 - 検索

正規表現構文

EmEditor は、Perl の正規表現構文に基づいています。

リテラル

".", "|", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^", "$", "|" および "\"を除くすべての文字はリテラルです。これらの文字は、"\"が前に付くとリテラルになります。例えば、"\?"の検索は文書内のすべての"?"に一致し、"hello"の検索は文書内のすべての"hello"に一致します。

メタ文字

次の表は、メタ文字の全リストと、正規表現におけるメタ文字の動作を示しています。

\

次に続く文字が特殊文字、リテラル、前方参照、または 8 進エスケープであることを示します。たとえば、"n" は文字 "n" と一致しますが、"\n" は改行文字と一致します。"\\" は "\" と、"\(" は "(" と一致します。

^

行の先頭と一致します。たとえば、"^e"は行頭の"e"と一致します。

$

行の末尾と一致します。たとえば、"e$"は行末の"e"と一致します。

*

直前の文字または部分式と 0 回以上一致します。たとえば、zo* は "z" と "zoo" のどちらにも一致します。* は {0,} と同じ意味です。

+

直前の文字または部分式と 1 回以上一致します。たとえば、'zo+' は "zo" や "zoo" とは一致しますが、"z" とは一致しません。+ は {1,} と同じ意味です。

?

直前の文字または部分式と 0 回または 1 回一致します。たとえば、"do(es)?" は "do" または "does" の "do" と一致します。? は {0,1} と同じ意味です。

{n}

n には、0 以上の整数を指定します。正確に n 回一致します。たとえば、'o{2}' は "Bob" の "o" とは一致しませんが、"food" の 2 つの "o" とは一致します。

{n,}

n には、0 以上の整数を指定します。少なくとも n 回一致します。たとえば、'o{2,}' は "Bob" の "o" とは一致しませんが、"foooood" のすべての "o" とは一致します。"o{1,}" は "o+" と同じ意味です。"o{0,}" は "o*" と同じ意味です。

{n,m}

m および n には 0 以上の整数を指定します。n は m 以下です。n 〜 m 回一致します。たとえば、"o{1,3}" は "fooooood" の最初の 3 つの "o" と一致します。"o{0,1}" は "o?" と同じ意味です。カンマと数の間には空白を入れません。

?

ほかの量指定子 (*, +, ?, {n}, {n,}, {n,m}) の直後に指定すると、一致パターンが最短一致になります。既定のパターンでは、できるだけ多くの文字列と一致するのに比べて、最短一致パターンでは、できるだけ少ない文字列と一致します。たとえば、文字列 "oooo" に対して、'o+?' を指定すると 1 つの "o" と一致し、'o+' を指定するとすべての "o" と一致します。

.

任意の 1 文字に一致します。たとえば、".e"は、"he"、"we"、"me"のいずれかと一致します。[正規表現「.」が改行文字に一致することができる] チェック ボックスがチェックされている場合、[正規表現で検索する追加行数] テキスト ボックスで指定する行数の範囲内で、改行にも一致します。

(pattern)

()は、2つの目的があります: pattern を部分式にグループ化することと、一致した文字列を取得することです。たとえば"(ab)*"は"ababab"という文字列すべてに一致します。部分式は左から右の順に番号化された後方参照 (以下を参照) によって取得できます。かっこ ( ) と一致させるには、'\(' または '\)' を指定します。

\1 - \9

後方参照を示します。後方参照は、一致した部分式への参照です。参照は部分式が一致したものであり、表現そのものではありません。後方参照はエスケープ文字"\"とそれに続く数字"1"-"9"から成り立っています。後方参照は [検索] メニューの [置換] を選択したときに使います。正規表現を使ってテキスト パターンを見つけ、一致したテキストは指定した後方参照で置換されます。たとえば、"(h)(e)"は"he"を見つけ、[置換後の文字列] に入力した"\1"は"he"を"h"に変換し、"\2\1"は"he"を"eh"に変換します。

(?:pattern)

pattern と一致しても、その文字列が記憶されない部分式です。後方参照で使用できません。"または" を意味する (|) を使用して、パターンの一部を結合するときに便利です。たとえば、'industry|industries' と指定する代わりに、'industr(?:y|ies)' と指定する方が簡潔です。

(?=pattern)

肯定先読みを実行する部分式です。pattern に一致する文字列が始まる位置にある検索文字列と一致します。一致した文字列は記憶されず、後で使用することはできません。たとえば"x(?=abc)"は、abc が後に続く場合のみ"x"に一致します。pattern には改行を含めることはできません。

(?!pattern)

否定先読み検索を実行する部分式です。pattern に一致しない文字列が始まる位置にある検索文字列と一致します。一致した文字列は記憶されず、後で使用することはできません。たとえば"x(?!abc)"は、abc が後に続かない場合のみ"x"に一致します。pattern には改行を含めることはできません。

(?<=pattern)

肯定後読みを実行する部分式です。pattern に一致する文字列で終わる位置にある検索文字列と一致します。一致した文字列は記憶されず、後で使用することはできません。たとえば"(?<=abc)x"は、abc の後に続く場合のみ"x"に一致します。pattern には改行を含めることはできません。pattern は固定長である必要があります。

(?<!pattern)

否定後読み検索を実行する部分式です。pattern に一致しない文字列で終わる位置にある検索文字列と一致します。一致した文字列は記憶されず、後で使用することはできません。たとえば"(?<!abc)x"は、abc の後に続かない場合のみ"x"に一致します。pattern には改行を含めることはできません。pattern は固定長である必要があります。

x|y

x または y と一致します。たとえば、"z|food" は "z" または "food" と一致します。'(z|f)ood' は、"zood" または "food" に一致します。

[xyz]

文字セットを指定します。角かっこで囲まれた文字のいずれかに一致します。たとえば、'[abc]' は "plain" の 'a' と一致します。

[^xyz]

除外する文字セットを指定します。角かっこで囲まれた文字以外の文字に一致します。たとえば、'[^abc]' は "plain" の 'p' と一致します。

[a-z]

文字の範囲を指定します。指定した範囲に含まれる任意の文字に一致します。たとえば、'[a-z]' は小文字の英字 a 〜 z の範囲にある任意の文字と一致します。

[^a-z]

否定の文字の範囲を指定します。指定した範囲に含まれていない任意の文字に一致します。たとえば、'[^a-z]' は小文字の英字 a 〜 z の範囲外にある任意の文字と一致します。

文字クラス

次の文字クラスは、文字セットの中で、"[:classname:]" のように使用されます。例えば、"[[:space:]]" はすべての空白文字のセットを表します。

alnum

任意の言語上の文字と数字: アルファベット、音節文字、漢字が含まれます。

alpha

任意の言語上の文字: アルファベット、音節文字、漢字が含まれます。

blank

任意の空白文字、空白またはタブ。

cntrl

任意のコントロール文字。

digit

任意の数字 0-9。

graph

任意のグラフィック文字。

lower

任意の a-z、その他の小文字。

print

任意の表示できる文字。

punct

任意の句読点。

space

任意の空白文字。

upper

任意の A-Z、その他の大文字。

xdigit

任意の 16 進数文字 0-9、a-f、A-F。

word

任意の単語文字 (すべての alnum 文字と下線)。

unicode

文字コード値が 256 以上の任意の文字。(Regex.Boost のみ)

文字プロパティ

構文:

\p{property-name}

\P{property-name}  (否定)

\p{^property-name}  (否定)  (Onigmo のみ)

次の文字プロパティ名が使用できます。例えば、"\p{alnum}" は任意の英数字を表し、"\P{alnum}" はその否定形です。

alnum

任意の言語上の文字と数字: アルファベット、音節文字、漢字が含まれます。

alpha

任意の言語上の文字: アルファベット、音節文字、漢字が含まれます。

blank

任意の空白文字、空白またはタブ。

cntrl

任意のコントロール文字。

digit

任意の数字 0-9。

graph

任意のグラフィック文字。

lower

任意の a-z、その他の小文字。

print

任意の表示できる文字。

punct

任意の句読点。

space

任意の空白文字。

upper

任意の A-Z、その他の大文字。

xdigit

任意の 16 進数文字 0-9、a-f、A-F。

word

任意の単語文字 (すべての alnum 文字と下線)。

unicode

文字コード値が 256 以上の任意の文字。(Regex.Boost のみ)

ascii

ASCII 文字。(Onigmo のみ)

Hiragana

ひらがな。(Onigmo のみ)

Katakana

カタカナ。(Onigmo のみ)

Han

漢字。(Onigmo のみ)

Hangul

ハングル。(Onigmo のみ)

g 完全なプロパティ名の一覧については Unicode Properties を参照してください (Onigmo のみ)

1 文字エスケープ シーケンス

次のエスケープ シーケンスは 1 文字のエイリアスです。

\a

0x07 ベル文字

\f

0x0C フォーム フィード

\n

0x0A 改行

\r

0x0D 復帰

\t

0x09 タブ

\v

0x0B 垂直タブ

\e

0x1B エスケープ文字

\0dd

0dd 8 進数

\xXX

0xXX 16 進数 (Unicode)

\x{XXXX}

0xXXXX 16 進数 (Unicode)

\cZ Z-'@'

Ctrl-Z (Z は、'@'以下の任意の文字コード)

単語の区切り

次のエスケープ シーケンスは単語の区切りに一致します。

\<

単語の開始位置に一致します。

\>

単語の終了位置に一致します。

\b

単語の区切り (単語の開始または終了位置) に一致します。

\B

単語の区切りでないときに一致します。

エスケープ シーケンス

次のエスケープ シーケンスは、すべての文字クラスを表現するのに使われます。

\w

単語に使用される任意の文字と一致します。英数字とアンダースコアが含まれます。

\W

\w の補完です。

\s

空白、タブ、フォーム フィードなどの任意の空白文字と一致します。

\S

\s の補完です

\d

任意の数字 0 から 9 と一致します。

\D

\d の補完です。

\l

任意の小文字 a から z と一致します。

\L

\l の補完です。

\u

任意の大文字 A から Z と一致します。

\U

\u の補完です。

\C

任意の文字と一致します。'.'と同等です。

\Q

引用始まり演算子です。ここから引用終わり演算子"\E"までは、リテラルとして扱われます。

\E

引用終わり演算子です。\Q から始まるシーケンスを終了します。

置換表現

[置換] ダイアログ ボックスおよび [ファイルから置換] ダイアログ ボックスでは、次の表現が [置換後の文字列] ドロップダウン リスト ボックスで使用できます。

\0

正規表現全体への後方参照を示します。

\1 - \9

後方参照は、一致した部分式への参照です。参照は部分式が一致したものであり、表現そのものではありません。後方参照はエスケープ文字"\"とそれに続く数字"1"-"9"から成り立っています。

\n

改行

\r

ファイルから置換では、復帰文字として使用します。改行の指定方法もお読みください。

\t

タブ

\L

次に続く文字列を小文字に変換します。

\U

次に続く文字列を大文字に変換します。

\H

次に続く文字列を半角に変換します。

\F

次に続く文字列を全角に変換します。

\E

以前の \L、\U、\F、または \H による変換を終了します。

(?n:true_expression:false_expression)

部分式 N が一致した場合、true_expression に変換されます。一致しない場合は false_expression に変換されます。

注意

[ファイルから検索] および [ファイルから置換] では、復帰 (\r) と改行 (\n) を厳密に分けて検索する必要があります。指定方法の違いについて、詳しくは、改行の指定方法をお読みください。

"\l"、"\u"とその補完のように、エスケープ シーケンスによっては、大文字と小文字を区別するがチェックされていることが必要です。

著作権表示

EmEditor の正規表現検索ルーチンは、Boost ライブラリの Regex++ 、および Onigmo を利用しています。

Copyright (C) Dr John Maddock

Copyright (C) K. Takata, based on Oniguruma Copyright (C) by K. Kosako.

参考

Q. 正規表現例を教えてください。

改行の指定方法

g Boost.Regex: Regular Expression Syntax

g Onigmo: Regular Expression Syntax

g Onigmo: Unicode Properties

Copyright © 2003-2016 by Emurasoft, Inc.