I.Regexで何ができる?

1.特定の文字列の出現数の算出

Rgexで文字列の中に特定のパターンの出現回数を算出したいとします。

For loopsを用いるより、簡単なコードになります。

for loopを用いる:

string = "総理大臣の指名かける?菅...だと思うけど、漢字書けない。名前も思い出せない。「菅」の読み方は「かん」じゃないの知ってる。"
target = ['菅']
num_puncts = 0
for punct in target:
  if punct in string:
    num_puncts+=string.count(punct)
print(num_puncts)
## 2

reを用いる:

import re
pattern = r"[菅]"
print(len(re.findall(pattern, string)))
## 2

2.アルファベットと数字を分ける

アルファベット+数字の文字列のリストのアルファベットと数字にわけることができます。

Regular expressionsを用いcompile()で文字列のパターンを指定します。

# import a library
import re
# create a list
mystrings = ['ab12', 'abc123', 'abcd1234', 'abcde12345']
# Compile a regular expression pattern
pattern = re.compile("([a-zA-Z]+)([0-9]+)")
# split strings with a list comprehension
[pattern.match(string).groups() for string in mystrings] 
## [('ab', '12'), ('abc', '123'), ('abcd', '1234'), ('abcde', '12345')]

[a-zA-Z]+:大文字、小文字のアルファベットが2文字以上

[0-9]+:数字が2文字以上

[pattern.match(string).groups() for string in mystrings] : リスト・コンプリヘンションです。

II.Regexの基本

To be continued.