Nintendo MessageStudio ヘルプ

# 検索で利用可能な正規表現

## 正規表現とは？

正規表現(Regular Expression)とは、テキストの検索やパターンマッチングを行うときに 柔軟性や厳密性を持たせるために利用する仕組みです。 これによって、素早く特定の文字列を絞り込んだり、検索漏れをなくしたりすることが出来ます。

たとえば、「メールアドレス」が入力されているテキストを検索したいとします。 ご存知のように、メールアドレスは利用者ごとに異なる文字列となるため、そのまま検索することはできません。 しかし、メールアドレスは「ユーザー名@ホスト名」のようになっている場合がほとんどです。 このような、検索に引っ掛けるためのルールを記述することで特定のパターンの文字列を検索することが可能です。

正規表現を利用するときには、検索オプションのところへチェックを入れてください。

正規表現は、Message Studio独自の仕組みではなく、コンピューターシステム全般的に利用される技術です。 ここでは、テキストの検索のためによく利用されるもののみを掲載します。 Message Studioで利用可能な正規表現について詳しくは以下のウェブサイトを参照してください。

ttp://msdn.microsoft.com/ja-jp/library/az24scfc(VS.80).aspx

## 正規表現パターンの記述方法

### 文字列エスケープ

正規表現を利用してパターンを表現する場合、特定の記号には特別な意味を持つものがあります(詳しくは後述します)。 アルファベット以外の文字の直前にバックスラッシュ(日本語環境の場合は円記号が該当)を入力することで、 特殊な意味を打ち消し、文字本来のものにマッチします。 たとえば、以下の正規表現はアスタリスク記号(*)１文字にマッチします(本来、アスタリスクは特殊な意味を持ちます)。

    \*

バックスラッシュがアルファベットの直前に入力された場合、 入力された文字に応じて特殊な文字と一致します。

\t | バックスラッシュの直後にtがついた場合、タブ文字と一致します。
\r | バックスラッシュの直後にrがついた場合、キャリッジリータン文字と一致します。 通常、\r\nと入力して、１つ分の改行を検索します。
\n | バックスラッシュ文字の直後にnがついた場合、ラインフィード文字と一致します。 通常、\r\nと入力して、１つ分の改行を検索します。
\u0020 | バックスラッシュの直後にuが入り、その直後に16進数が4桁続いた場合、Unicode文字と一致します。 コンピューターにIME(Input Method Editor)がインストールされていない状況で検索だけを行う必要がある場合に便利です。 たとえば、日本のPCでハングル文字を検索する場合に有効に利用できます。 Unicode文字コード表は、以下のUnicodeのサイトを参照してください。 ttp://www.unicode.org/charts/
\\ | バックスラッシュが二個連続できた場合、それはバックスラッシュ一つ分と一致します。

## 文字クラス

文字クラスは、指定されたグループの中のいずれかの文字にマッチする検索をするために利用します。 たとえば、電話番号を検索する場合特定の文字ではなく、「数字一文字」という幅広い意味を持たせた パターンで検索する必要があります。このような検索は文字クラスを利用することで書くことが出来ます。

[characters] | 角括弧で複数の文字を囲むと、入力された文字の中のいずれかにマッチします。 たとえば、[abc]と入力すれば、aまたはbまたはcという意味になります。 連続された範囲はハイフン(-)で入力することが出来ます。 たとえば、[0-9]と入力すれば数字1文字になりますし、[0-9A-F]とすれば、16進数で利用可能な数字1文字になります。
[^characters] | 角括弧で囲まれていて、その先頭がサーカムフレックス記号(^)になっている場合、 括弧内に入力された文字以外のものとマッチします。 たとえば[^abc]であればaでなく、かつbでもなく、かつcでもないという意味になります。
. | ピリオド文字(.)を入力すると、改行を除く任意の一文字とマッチします。 ただし、角括弧中で利用されると、任意の一文字ではなく、ピリオド文字自体として扱われることに注意してください。
\d | 省略形です。数字1文字と一致します。[0-9]と同等の動作です。
\s | スペースやタブなど、空白文字と一致します。

## 繰り返し(数量指定子)

検索するときに、特定の文字を何度も繰り返している箇所の検索を行いたい場合があります。 たとえば、「1文字以上連続する数字」などを検索したい場合などです。 この場合、以下に挙げる量指定子を繰り返すものの直後におくことで行うことが出来ます。

* | アスタリスク(*)を指定すると、0回以上の繰り返しを示します。
+ | プラス記号(+)は、1回以上の繰り返しを示します。
? | 疑問符(?)は、直前の文字が存在するか、存在しないかを表します。 0回または1回を表します。
{n} | 波括弧で囲われて、中に数字が入っている場合は、ちょうどその数字の回数だけ繰り返します。

この検索手法は、繰り返す直前の文字が文字クラス(上述)であると効果的です。 たとえば、「4桁の数字」を検索する場合は以下のように入力できます。

    [0-9]{4}

## 境界一致(アトミックゼロ幅アサーション)

以下に示すメタ文字は、特定の文字と一致するのではなく、「場所」に対して有効です。 これを利用することで、より厳密性を増した検索を行うことが出来ます。 たとえば、land(土地)を普通に検索した場合、通常ですとisland(島)も引っかかります(islandは、単語の中にlandを含んでいるため)。 この機能を利用すると、厳密にlandという単語のみを取り出し、islandを検索結果から除外できます。

^ | サーカムフレックス(^)がついた場合、そこが行頭であるものを検索できます。 サーカムフレックスが角括弧の先頭についた場合意味が変わります(上述)ので、ご注意ください。
$ | ドル記号($)がついた場合、そこが行末であるものを検索できます。
\b | バックスラッシュの次にbがついた場合、そこが単語の間であることを示します。 上述の例のようにlandを検索する場合、\bland\bと入力すればよいことになります。

- はじめに
- Message Studioの基礎
  - ゲーム製作のフロー
  - プロジェクトファイルについて
  - プロジェクトエクスプローラの操作
  - ウインドウ操作
  - 言語設定
  - カラーの設定
  - 属性の設定
- メッセージ編集
  - 基本操作
  - テキストの種類
  - クリップボードを利用した操作
  - 言語セルステータス
  - 表示のカスタマイズ
  - メッセージ一覧画面のTips
- タグ
  - 概要
  - タグを用いた編集
  - タグのソース文字列
  - タグ比較について
- 検索機能
  - 概要
  - 簡易検索
  - 詳細検索
  - 正規表現
- スペルチェック
  - スペルチェックについて
  - スペルチェックの利用方法
- ロールとパーミッション
  - 概要
  - ロールの追加とパーミッションの設定
  - ロールの選択
- メッセージの統計情報
  - 統計情報について
  - 統計情報の利用方法
- スタイル機能と幅計算
  - スタイルと幅計算について
  - テキスト幅の全体チェック
  - レンダリング方式について
  - スタイルの設定方法
- フォント
  - フォント機能の概要
  - フォントに関するワークフローについて
  - フォントの設定
- チーム管理機能
  - 概要
  - ファイル管理のされ方
  - チーム管理機能を利用する
  - 基本操作
  - コミットログを表示する
  - 差分(diff)を表示する
  - 競合とマージ
  - プロキシサーバの設定
  - サーバーの設定
- メタ情報の設定
  - メタ情報の設定について
  - 設定可能なメタ情報一覧
- リソースファイル関連
  - リソースについての概要
  - リソースファイルを出力する
  - 出力設定を行う
  - ビルドイベントについて
  - 共通のバイナリフォーマット
  - メッセージバイナリフォーマット
  - フローチャートバイナリフォーマット
  - プロジェクトバイナリフォーマット
    - プロジェクトバイナリフォーマット
    - カラー情報
    - コンテンツ情報
    - 属性情報
    - タグ情報
    - スタイル情報
  - タグについて
- マクロ文字列展開機能
  - マクロ文字列とは
  - 利用可能なマクロ一覧
- コマンドライン関連
  - コマンドライン制御について
  - /convertスイッチについて
- プラグインについて
  - プラグインの概要
  - プラグインの種類について
- プラグインの作成方法
  - 単純なプラグイン作成チュートリアル
  - 開発環境を利用しない作成方法
  - サンプルについて
- Message Studioのアセンブリ設定
  - Caspol：アセンブリセキュリティ設定
  - Ngen：ネイティブイメージ生成
- XML仕様
  - 概要
  - プロジェクトファイル（.msproj）のXML仕様
  - メッセージファイル（.mstxt）のXML仕様
- libmsについて
  - 概要
  - コンパイルの仕方
- 共通の関数
  - LMS_SetMemFuncs
- メッセージに関する関数
  - LMS_InitMessage
  - LMS_CloseMessage
  - LMS_SearchMessageBlockByName
  - LMS_GetMessageBlockInfoByName
  - LMS_GetTextNum
  - LMS_GetTextIndexByLabel
  - LMS_GetText
  - LMS_GetTextSize
  - LMS_GetTextByLabel
  - LMS_GetLabelByTextIndex
  - LMS_GetTextStyle
  - LMS_GetTextStyleByLabel
  - LMS_GetAttributeSize
  - LMS_GetAttribute
  - LMS_GetAttributeText
- フローチャートに関する関数
  - LMS_InitFlowchart
  - LMS_CloseFlowchart
  - LMS_GetNodeNum
  - LMS_GetEntryNodeIndex
  - LMS_GetNodeDataPtr
  - LMS_GetFlowNodeIndex
  - LMS_GetCaseIndexesFromBranchNode
  - LMS_GetFlowParamText
- プロジェクトに関する関数
  - LMS_InitProject
  - LMS_CloseProject
  - LMS_SearchProjectBlockByName
  - カラー情報に関する関数
    - LMS_GetColorIndexByName
    - LMS_GetColor
    - LMS_GetColorByName
    - LMS_GetColorNum
  - コンテンツ情報に関する関数
    - LMS_GetContentsNum
    - LMS_GetContentPath
  - 属性情報に関する関数
    - LMS_GetAttrInfoIndexByName
    - LMS_GetAttrType
    - LMS_GetAttrTypeByName
    - LMS_GetAttrOffset
    - LMS_GetAttrOffsetByName
    - LMS_GetAttrListItemName
    - LMS_GetAttrListItemNameByName
    - LMS_GetAttrNum
    - LMS_GetAttrListItemNum
  - タグ情報に関する関数
    - LMS_GetTagGroupName
    - LMS_GetTagName
    - LMS_GetTagParamName
    - LMS_GetTagParamType
    - LMS_GetTagListItemName
    - LMS_GetTagGroupNum
    - LMS_GetTagNum
    - LMS_GetTagParamNum
    - LMS_GetTagListItemNum
  - スタイル情報に関する関数
    - LMS_GetStyleIndexByName
    - LMS_GetRegionWidth
    - LMS_GetRegionWidthByName
    - LMS_GetLineNum
    - LMS_GetLineNumByName
    - LMS_GetFontIndex
    - LMS_GetFontIndexByName
    - LMS_GetStyleNum
- 扱うファイルの拡張子一覧
- よくある質問