≪正規表現による検索≫ [Regex]オプションをOnにした場合は、正規表現による検索が行われます。 ワイルドカードでは表現できない複雑・柔軟な検索キーワードが指定できます。 基本的な正規表現の指定方法については、以下のサイトなどを参照してください。 ・サルにもわかる正規表現入門 (正規表現の入門としてお勧めです) http://www.mnet.ne.jp/~nakama/ ・正規表現の機能の覚書き (簡潔明瞭にまとまっています) http://anond.hatelabo.jp/20080923015641 HNXgrepでは、.NET Frameworkが提供している正規表現を利用しています。 最短一致、先読み後読み・否定、前方後方参照などの高度な指定も可能です。 使用できる正規表現の詳細は、以下のサイトなどを参照してください。 ・正規表現の基本: .NET Tips: C#, VB.NET (.NETの正規表現リファレンスにもお勧め) http://dobon.net/vb/dotnet/string/regex.html ・正規表現言語要素 (Microsoft MSDNの公式解説。わかりずらいです・・) http://msdn.microsoft.com/ja-jp/library/az24scfc%28v=VS.80%29.aspx -------------------------------------------------------------------------------- ≪応用:合致文字列からの部分抽出(名前つきグループによる指定)≫ 正規表現検索時は、以下のような特定の名前でキャプチャ(グループ化)すると、 マッチした文字列の一部分を検索結果の内容として取り出すこともできます。 ・『(?***)』または『(?<位置>***)』 →合致箇所一覧表示の「位置」列に、「***」の内容が表示されます。 (未指定時は、行内の桁位置(1開始)が表示されます。 Excelや.iniファイルなどでは、シート名やセクション名が表示されます) ・『(?***)』または『(?<合致>***)』または『(?<合致文字列>***)』 →合致箇所一覧表示の「合致文字列」列に、「***」部分の内容が表示されます。 (未指定時は、マッチした文字列全体が表示されます) ・『(?***)』または『(?<備考>***)』 →合致箇所一覧表示の「備考」列に、「***」部分の内容が表示されます。 (未指定時は特に何も表示されません) -------------------------------------------------------------------------------- ≪参考1:ワイルドカードの検索仕様≫ [?][*][|][&][word]の各オプションをOnにしたときには、 検索キーワードに入力された該当文字などをワイルドカードとして扱います。 検索時には、以下の正規表現に展開されたうえで検索が行われます。 ・[?]任意の一文字 → 正規表現『.』に置き換え ・[*]任意の文字列 → 正規表現『.*?』最短一致に置き換え ・[|]Or検索 → 正規表現『|』として実行 ・[&]And検索 → 総当りのOr検索条件に展開して実行 (『A&B』は、『A.*?B|B.*?A』に展開) ※[|][&]を両方Onにした場合は、And条件を先に解釈します。 (『A|B&C』は『A|(B.*?C|C.*?B)』に展開) ・[word]単語検索 → 検索キーワードの前後に『\b』を付加し、 単語の境界ではない場合は抽出対象外とする ※[|]も指定している場合は、[|]の前後にも『\b』を付加します。 ※英単語や変数名を検索するときに指定すると、効果を発揮します。 『**』『||』『&&』と2文字重ねた場合は、ワイルドカードではなくエスケープとみなし それぞれ『*』『|』『&』を検索対象文字とします。(『\*』『\|』『\x26』に展開) 『?』については2文字重ねてもエスケープとはみなされず、任意の2文字を検索します。 ★CtrlまたはShiftキーを押しながら[Regex]オプションをクリックすると、 正規表現On/Off切り替えと同時に、 検索キーワードの正規表現エスケープ/アンエスケープが行われます。 ワイルドカード指定内容を正規表現で細かくカスタマイズするときなどに便利です。 ★[Regex]オプション/[+]オプションを両方Onにした場合は 正規表現とワイルドカードを併用でき、[Regex]オプションOff時と同様に 検索キーワード中のワイルドカード文字が展開されます。 [&][|]については、カッコ『(』『)』による優先順位指定もできます。 なお、[全(Z)]全角半角あいまい検索オプションを指定した場合は、 (1)検索キーワード/検索対象ファイルとも、全角文字を半角文字に変換 「@」→「@」、「を」→「ヲ」など (2)「が」「ポ」、「ザ」など濁点/半濁点つきのかな文字については、 検索対象ファイルの内容は半角変換せず、 検索キーワードのみ「だ」→(だ|ダ|ダ)などと、あいまい検索へ補正 を行ったうえで検索します。 [キーワード▽]ボタン右側をクリックし「正規表現展開文字列確認」メニューを選択 すると、展開された正規表現文字列の情報が、プレビュー欄に表示されます。 また、画面左下「結果出力」より出力した検索結果テキストにも、 入力した検索条件キーワード/展開された正規表現文字列の情報が出力されます。 必要に応じ、内容をご確認ください。 -------------------------------------------------------------------------------- ≪参考2:キーワード指定ウィンドウを用いたTAB/改行を含む検索キーワード指定≫ [キーワード▽]ボタン右側をクリックし「別ウィンドウで入力」メニューを選択すると キーワード指定を行なうための別ウィンドウが表示されます。 このウィンドウでは、TAB/改行も検索キーワードに指定できます。 入力したTABは、そのままTAB文字を含む検索キーワードとして検索が行なわれます。 改行については、検索モードに応じ以下のように検索が行なわれます。 ・複数行検索:入力したとおりの改行含む文字列を、そのまま検索対象とする (ただし改行は正規表現『(\r\n?|\n)』に置換し、CRLF/CR/LF不問とする) ・それ以外 :改行区切りのいずれかの文字を検索対象(改行を正規表現『|』に置換) -------------------------------------------------------------------------------- ≪参考3:各検索モードにおける検索仕様/正規表現動作オプション≫ 画面上で[/i]などと表されているオプション・検索モードを指定すると、 検索時の正規表現動作オプションが以下のとおり変わります。 (Perlの該当パターンマッチオプションと同様の効果が得られます) ・[英/i] →半角アルファベット(A-Za-z)の大文字/小文字を区別せず検索します。 (.NET Frameworkの正規表現オプションRegexOptions.IgnoreCase適用) ・検索モード「行内全検索/g」 →繰り返してマッチを行い、同一行内の合致箇所をすべて検出します。 (検索モード「行検索」では、同一行内で合致箇所が複数見つかっていても 最初の合致箇所のみを有効とし、残りの合致箇所は無視します) ・検索モード「複数行検索/msg」 →行単位ではなく、ファイル全体で合致箇所を探します。 複数行にまたがる文字列を検索できます。 改行(\n)もワイルドカード(正規表現『.』や[?][*])にマッチします。 (.NET Frameworkの正規表現オプション RegexOptions.MultilineおよびRegexOptions.Singleline適用) ・検索モード「複数行厳密検索/mg」 →「複数行検索/msg」と同様にファイル全体で合致箇所を探しますが、 改行(\n)はワイルドカードにマッチしません。 (.NET Frameworkの正規表現オプションRegexOptions.Multiline適用) -------------------------------------------------------------------------------- ≪参考4:検索モード「改行インデント走査のみ」≫ 検索モード「改行インデント走査のみ」は、 正規表現による検索は一切行わずに テキストファイルの改行コード・インデント幅について調査するモードです。 ファイル一覧の「備考」列には、以下の情報が表示されます。 (1)インデント文字のみの行数 (2)ファイルのインデントに使われている文字(TAB/SPACEどちらか) ・SPACEインデントの場合はおおむね何文字インデントか、合致率はどれくらいか ・SPACEインデント/TABインデントどちらも使われている場合、使用比率 また、合致箇所として、以下のものを検出します。 (1)不適切な改行コード: 同一ファイル内で、改行コードが不一致になっている箇所 (2)不適切なインデント行: スペースインデントの後ろにTABインデントがある箇所 検出したファイルをプレビュー表示すると、 不適切な改行/インデントの位置が強調表示されます。