&autolink(id=wikibody)
ワイルドカードと正規表現
ワイルドカードと正規表現
当ページは「http://wiki.windower.net/pluginregex」の訳です。
SpellCast (2.17)以降、AutoExec (2.7) 以降、ChatMon (1.5)以降では、条件の指定方法として「ワイルドカード」と「正規表現」を使用することができます。 ワイルドカードと正規表現を使うことによって、条件に柔軟性を持たせることが出来ます。
複数の条件定義(OR条件)
条件A|条件B|条件C
複数の条件を「|」で区切って記述することによって、どれかの条件に当てはまりさえすれば判定が真となります。
(例)Spellcast If条件文にて「<If Spell="Fire|Stone|Water"」と設定すると、ファイア、ストーン、ウォータのいずれかの場合に当該Ifは実行されることになります。
(例)Spellcast If条件文にて「<If Spell="Fire|Stone|Water"」と設定すると、ファイア、ストーン、ウォータのいずれかの場合に当該Ifは実行されることになります。
ワイルドカード
ワイルドカードとは、「なんにでも当てはまる」書き方であり、「*」と「?」の二種類が使えます。
* | 0、又は1つ以上の文字に当てはまる |
? | 1文字に当てはまる |
(?の例)
m???e?
これは、「mから始まり、何か3文字あり、次にe、最後に何か1文字」という文字列に当てはまるという書き方です。
monkey ○ 何か3文字はonkが当てはまり、最後の1文字はyが当てはまります。
monkeys × 最初のm、何か3文字のonk、次のe、最後の何か1文字のyまでは問題ありませんが、最後のsが余分であり、この条件は×となります。
monkey ○ 何か3文字はonkが当てはまり、最後の1文字はyが当てはまります。
monkeys × 最初のm、何か3文字のonk、次のe、最後の何か1文字のyまでは問題ありませんが、最後のsが余分であり、この条件は×となります。
(*の例)
m*d*
これは、「mから始まり、途中にdがあり、最後に何かあってもなくてもよい」という文字列に当てはまるという書き方です。
mandy ○
more bloody towels ○ m~始まり、dまでは7文字もあり、dの後ろに8文字もありますが、*は0~無限の文字列に当てはまるため問題なく条件は○となります。
md ○ *は0文字にも当てはまります。
master × mから始まってはいますが、dがありません。よって×です。
mandy ○
more bloody towels ○ m~始まり、dまでは7文字もあり、dの後ろに8文字もありますが、*は0~無限の文字列に当てはまるため問題なく条件は○となります。
md ○ *は0文字にも当てはまります。
master × mから始まってはいますが、dがありません。よって×です。
複数の条件定義とワイルドカードの組み合わせ
Fire*|Thunder*|Blizzard*
これは、ファイア、サンダー、ブリザドのそれぞれI~IV(Fire,FireII,FireIII,FireIV)に当てはまるようになります。
正規表現による、より柔軟性の高い条件定義方法
正規表現を用いることによって、より強力な条件定義が可能となります。ただし、専門的な知識を必要とするため、よくご理解の上ご利用ください。ほとんどの場合は、ワイルドカードと複数条件定義で事足りると思いますので、ここではやさしい説明は行いません。
- 正規表現での定義方法 (Spellcast 2.2以前の設定方法)
(regex)正規表現での条件文(/regex)
(regex)~(/regex)でくくって記述する。
- 正規表現文法は次の中から選択可能
(regex-basic) | POSIX基本文法 |
(regex-extended) | POSIX拡張文法 |
(regex-perl) | perl文法 |
- 正規表現と正規表現も「|」で複数条件指定可能
正規表現を使わない条件定義との共存もできる。
(regex)^BLM/(WHM|RDM|SCH)$(/regex)|(regex)^RDM/(BLM|WHM|SMN|NIN|WAR)$(/regex)|WHM/*
黒/白、黒/赤、黒/学、赤/黒、赤/白、赤/召、赤/忍、赤/戦、白/なんでも のいずれかである場合に条件は真