正規表現を理解しよう
突然難しくなりますが、プリセットの正規表現を少し変更して、独自の正規表現を作ってみましょう。
変更元になる正規表現は「 *[グラフ]名前:値 」です。この正規表現は、
^\[グラフ\]\s?(?'name'.+):(?'value'[+-]?\d+(?:\.\d\d?)?)$
となっています。この正規表現は、
^ \[グラフ\] \s? (?'name'.+) : (?'value'[+-]?\d+(?:\.\d\d?)?) $
という7つの要素で出来ています。正規表現の文字列では 記号 は特別な意味をもっています。最初の ^ という記号ですが「行の先頭」という意味をもっています。最後の $ という記号は「行の末尾」という意味です。
2行目は [グラフ] という文字列の部分です。[ や ] という記号も特別な意味がありますが、直前に \ という記号をいれることで、特別な意味のない [ という文字を指定することになります。この部分を変更すれば [グラフ] と書くという部分を変更できます。
3行目と5行目はグラフの名前と値を取り出す部分なのでそのままにしておき、4行目は 名前 と 値 の区切り記号である : です。 : には特別な意味がないので、: と直接書いてしまっていますが、安全を期して \: と書いても問題ありません。
正規表現を組み立てる
たとえば、
*[カテゴリ1][カテゴリ2] タイトル (テスト=10)
というような見出しで最後の部分をみて テスト というグラフに 10 をセットしたいとします。個々の要素をみていくと、
元の正規表現要素 | 意味 | 今回の変更では? | 新しい正規表現要素 |
---|---|---|---|
^ | 行の先頭 | いらない | |
\[グラフ\] | [グラフ] | "(" に変更 | \( |
\s? | 空白1つ(省略可) | いらない | |
(?'name'.+) | グラフの名前 | そのまま | (?'name'.+) |
: | 区切り記号の : | = に変更 | \= |
(?'value'[+-]?\d+(?:\.\d\d?)?) | グラフの値 | そのまま | (?'value'[+-]?\d+(?:\.\d\d?)?) |
新規追加 | \) | ||
$ | 行末 | そのまま | $ |
といったかんじになります。これを繋げて
\((?'name'.+)\=(?'value'[+-]?\d+(?:\.\d\d?)?)\)$
とすると、期待通りの機能になります。
正規表現に関して細かいことは、MSDN/正規表現言語要素を見れば書いてあるのですが、ちょっとした変更であれば Google などで正規表現に関する入門サイトなどを使って調べたほうがよいかもしれません。