正規表現

適当に書いたから編集なり訂正なりすきにしてね

メタ文字 . * + ? ^ | \ ( ) [ ] の基本的な使い方

これらは手前に\を置くことでメタ文字の機能を失わせられる。
   【正規表現】\.  \*  など  



. すべての1文字にマッチする。

   【正規表現】.の子|
   マッチする:男の子  女の子  ホモの子 など。○の子という形なら何にでもマッチ。



* 直前の文字が存在しない、または1個以上連続する。
   【正規表現】50*9のダメージ
   マッチする:59のダメージ  509のダメージ  5000009のダメージ  など。5と9の間にいくつ0があってもマッチ。

+ 直前の文字が1個以上連続する。
   【正規表現】50+9のダメージ
   マッチする:509のダメージ  5000009のダメージ  など。5と9の間に0が1つ以上あればマッチ。
   マッチしない:59のダメージ

? 直前の文字が存在しない、まはた1個のみ出現する。
   【正規表現】50?9のダメージ
   マッチする:59のダメージ  509のダメージ のみ。5と9の間に0がなし、または1個ならマッチ。
   マッチしない:5000009のダメージ  など



^ 行頭を表す

   【正規表現】^ラムウは弱い
   マッチする:ラムウは弱いよね  など。「ラムウは弱い」から始まるなら何にでもマッチ。
   マッチしない:極ラムウは弱いよね 


$ 行末を表す

   【正規表現】ラムウは弱い$
   マッチする:極ラムウは弱い  など。「ラムウは弱い」で終っていれば何にでもマッチ。
   マッチしない:ラムウは弱いよね




 ※行頭の ^ 、行末の $ を検索したいときは、メタ文字を否定する。
     【正規表現】^^ラムウは弱い
     マッチする:^ラムウは弱い

     【正規表現】ラムウは弱い$$
     マッチする:ラムウは弱い$




[] 括弧内の「文字」の何れかにマッチする。 - を使用し文字列を範囲で指定もできる。
   [0-9]  [0-9]  [A-Z]  [A-Z] [a-z] [a-z] [ぁ-ん]  [ァ-ン]  [ァ-ン]

   【正規表現】今日は[123]日
   マッチする:今日は1日  今日は2日  今日は3日  のみ。
   マッチしない:今日は4日  今日は2日


   繋げて使用することで更に幅を広げられる。
   [0-6A-Da-c]・・・半角数字の0123456か、半角大文字のABCDか、半角小文字abcの14文字の中から1文字にマッチ

   【正規表現】答えは[0-6A-Da-c]
   マッチする:答えはD  答えは3  答えはb  など。大文字小文字、半角全角もチェックされる。
   マッチしない:答えはF  答えは3  答えはx  など


   []内ではメタ文字も普通の文字として扱かえる。但し例外あり(次で説明)。

   .  *  +  ^  などを検索したい時。^を検索する場合は2番目以降に記載すること。
   【正規表現】1[.+*^]1
   マッチする:1+1  1*1  1^1  など。



   []内でも使い方に気をつけないとメタ文字として扱われるもの。

   [^○○]と括弧内の先頭に ^ を入れることで続く文字「以外の文字」を検索できる。
   【正規表現】1[^589]1
   マッチする:171  101  1と1  など。1と1の間は数字589以外。数字に限らず文字でもマッチ。


    ] [ \ - を検索する文字に含む場合

   [は括弧内の最初に。この位置なら\は必須ではない。
   【正規表現】[[ABCD]

   ]は手前に\を入れてメタじゃないこと指定しないと[]と扱われ誤認識が生まれる。
   【正規表現】[\]ABCD]

   \も同じく手前に\を入れてメタを否定しないと誤認識する。
   【正規表現】[\\ABCD]

   -は最初に書く。
   【正規表現】[-A]



 
() 括弧内の文字列をグループ化する。他のメタ文字と併用することで真価を発揮する。
   【正規表現】(無駄)+ァ!
   マッチする:無駄無駄無駄無駄ァ! など。「無駄」をグループ化し「+」で1回以上繰返す表現。


   | を使えばグループ化した文字列の何れかにマッチさせられる。
   (あああ|いいい|ううう)という風に区切ること指定できる。

   【正規表現】は(スリップストリーム|ブレインジャック|ビューティフルデス)の構え。
   マッチする:はスリップストリームの構え。  など。区切りはいくつでも可能。


   $1 $2 などを使えば()でグループ化したものを参照できる。
  ACTではTTS読上げなどで活躍する。

   【正規表現】(タンク1|タンク2|自分)に「(避雷|蓄電)」の効果
   マッチする:タンク1に「避雷」の効果 など。指定したプレイヤーについた効果にマッチする。

   それをTTSで読上げるために

   【TTS】$1に$2の効果
   こう記述すれば、「○○に●●の効果」と読上げる




実用

アラガンフィールド、呪詛の声、呪詛の叫声の3つのデバフの何れが自分(任意のキャラ名)についた時にマッチさせる。
名前は正確に入力するほうが確実だが、書くのが面倒なので .*(何かの文字を0回以上繰返す)で省略している。

.*(Yoshida|Soken)に「(アラガンフィールド|呪詛の叫?声)」の効果。




 529 :既にその名前は使われています:2014/03/06(木) 20:17:20.93 ID:TXZR6ITW
 正規表現まとめ
 
 . → すべての文字にマッチする
 [] → 角かっこで囲んだ中の文字列のいずれかにマッチすることを表す
    [0-9a-zA-Z]のように指定すると角かっこ中でハイフンを使用すると、マッチする文字を範囲指定できる
 * → 直前の文字が0回以上連続することを表す
 + → 直前の文字が1回以上連続することを表す
 ? → 直前の文字が0回または1回出現することを表す
    量指定子(*とか+)の直後に使うと、最短一致を表す
 | → (A|B)で、AもしくはBのような表現を表す
 \s → [a-zA-Z0-9\s]
 
 ツインタニア start using デスセンテンス on なまえ
 
 っていう文字列にマッチさせるなら、「ツインタニア start using デスセンテンス on .+」
 ツインが何かしたときに反応させるなら「ツインタニア start using .+? on .+」
 デスセンテンスとツイスターに反応させるなら「ツインタニア start using (デスセンテンス|ツイスター) on .+」
 
 試してないから動くかは知らんけど
 530 :既にその名前は使われています:2014/03/06(木) 20:19:41.09 ID:TXZR6ITW
 \sは酷い間違い
  なかったことにしてね(・ω<)
最終更新:2016年06月16日 12:01