正規表現
最終更新日09 Feb 2018 22:29
<gl.*?>(?=.*?</gl>
正規表現記号として認識されたくない場合
は\をつければok
あるパターンに囲まれた文字列を検出したい
はじまり(.+)おわり
# coding: UTF-8 import re match = re.search(r'\[\[\[(.+)\]\]\]', '||[[[spring-onion|わけぎ]]]||一||房||') if match: print(match.group(0)) # [[[spring-onion|わけぎ]]] print(match.group(1)) # spring-onion|わけぎ
出力結果
[[[spring-onion|わけぎ]]]
spring-onion|わけぎ
正規表現記号 | 意味 | 例 | 例の説明 |
---|---|---|---|
. | 任意の文字にマッチする。 | ||
| | 選択肢を区切る | gray|grey | gray または grey |
() | グループ化 演算子の優先順位を決めるだけ | gr(a|e)y | "(a|e)" の部分で a または e を示し、全体で gray または grey にマッチ |
? | 直前の表現が0個か1個ある | colou?r | color と colour にマッチする。ワイルドカード文字 |
* | 直前の表現が0~何個でもある1ワイルドカード文字 | ||
+ | 直前の表現が1個以上ある | ||
[ ] | 括弧内に含まれる一文字にマッチする。2 | ||
[^ ] | 括弧内に含まれない一文字にマッチする。3 | ||
^ | 行の最初にマッチする。 ^abcという4文字は、行頭が abc で始まるパターンを表現します | ||
$ | 行の最後にマッチする。です。$という4文字は、行末にある「です。」という3文字とマッチします。 | ||
\( \) | これに囲まれた表現は、後に呼び出すことが出来る。次の \n の項を参照のこと。 | ||
\n | ここで n は1から9までの数である。n 番目の \( \) で囲まれた部分にマッチする。この構文は理論的には、言うならば非正規で(正規言語の記述力を超える)、POSIX拡張正規表現では採用されていない。 | ||
\{x,y\} | 直前の"ブロック"の x 回以上 y 回以下の繰り返しにマッチする。例えば、"a\{3,5\}" は aaa、aaaa、aaaaa にマッチする。 |
2.4 [……] (大括弧と大括弧閉じによる囲み)
[と]の二つで囲まれたものを「クラス」とか「文字セット」といいます。囲みの中に書かれた任意の1文字にマッチします。たとえば、
[abc]
という5文字は、 a, b, c の3文字のいずれか1文字を表現します。3文字のうちどれでもいいのですが、とにかく1文字とマッチします。また
[0123456789]
という12文字は、 0~9 の10個の数字のうちの1文字とマッチします。もう少し例を上げると
[abc][0123456789]
という17文字は、 a0 a1 a2 a3 とか b0 b1 b2 b3 あるいは c0 c1 c2 などの2文字とマッチします。
ところで、該当の文字を一つづつ全て書かなければいけないとすると、ちと面倒です。これを便利に記述する方法もあります。例えば
[0123456789]
という12文字は
[0-9]
という5文字で表現することができます。この場合の半角の - (マイナス)は、範囲を表わす特別の文字です。
[A-Z]
という5文字は、半角アルファベットノ大文字1文字トマッチします。また、次のような記述も可能です。
[A-Za-z_]
これは、半角のアルファベット(大文字でも小文字でもかまわない。)と半角の _ のうち、いずれか1文字とマッチします。
[亜-腕]
という5文字は、第1水準漢字1文字を表現します。このように文字を(アスキーコード・JISコードの順序に配慮しながら)範囲指定で表現することができます。
2.5 [^……] (大括弧・羃乗・大括弧閉じ)
これは、クラスの否定です。指定された文字集合以外の1文字を表現します。例えば[^0-9]
という6文字は、「半角数字以外の任意の1文字」を表現します。アルファベットとか漢字等々半角の数字以外なら何でもいい訳ですね。もちろん
[^abcd]
とか
[^A-Za-z_]
などといった記述も可能です。
エスケープ文字と組み合わせても良いもの
\b \t \n \f \r \" \' \\