1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. 正規表現 特殊文字

正規表現 特殊文字

<パターンの特殊文字

正規表現は非常に多くの記号を使いる
○特殊文字でないすべての文字は対応するリテラルにマッチする
○.は、\n以外の任意の1文字にマッチする
○*は、任意の個数(0を含む)の直前の文字にマッチする
○?は、0個か1個の直前の文字にマッチする(オプション)
●特殊文字
\d:1個の数字
\D:1個の数字以外の文字
\w:1個の英字
\W:1個の英字以外の文字
\s:1個の空白文字
\S:1個の空白以外の文字
\b:単語の境界(\wと\Wの間、順序はどちらでも良い)
\B:単語の境界以外の文字間

source = '''I wish I may, I wish I might
Have a dish of fish tonight.'''

re.findall('wish', source)
['wish', 'wish']
次は、任意の位置にあるwishかfishを探す。
re.findall('wish|fish', source)
['wish', 'wish', 'fish']
次は先頭でwishを探す。
re.findall('^wish', source)
[]
末尾でfishを探す。
re.findall('fish$', source)
[]
^と&はアンカー(鏈)と呼ばれている。
次は、wかfの後にishが続いている物を探す。
re.findall('[wf]ish', source)
w, s, hのどれかが1個以上続いているところを探す。
re.findall('[wsh]+', source)
ghtの後ろに英数字以外のものが続いているところを探す
re.findall('ght\W')
I(Iとスペース)の後ろにwishが続くところを探す。
re.findall('I (?=wish)', source)
wishの前にI(Iとスペース)があるところを探す。
re.findall('(?<=I) wish', source)

マッチした文字列の出力の指定

mach()やsearch()を使った時は、結果オブジェクトのm.group()
という形ですべてのマッチを取り出すことができる。
パターンをかっこで囲むと、マッチは独自のグループに保存される。
m.groups()を呼び出せば、それらのタプルが得られる。