Day 17正規表現
9209 ワード
正規表現正規表現(汎用構文)正規表現は、文字列マッチングを行うためのツールであり、異なる記号で異なる文字 をマッチングするpython正規表現のサポートreモジュールを介して正規表現をサポートする方法fullmatch(正規表現、一致する文字列)--->正規表現と指定した文字列でマッチングし、マッチングに成功してマッチングオブジェクトを返すと、マッチングの失敗はNone pythonの正規表現が文字列に書かれていることを返します.しかし一般的にはr/Rを前に加算します 普通文字(代表文字そのもの . (任意の文字に一致する)任意の文字を表す点が現れ、1つの点は1つの文字 を表す.w(アルファベットを表す下線に一致) s(空白文字に一致) d(一致数字文字) b(単語境界を検出) ^(検出文字列先頭) $(検出文字列末尾) B(非単語境界検出) W(数字以外のアルファベットの下線に一致する中国語) S(空白以外の文字に一致) D(数字以外の文字に一致) [文字セット](文字セットに一致する任意の文字) [^文字セット]-非文字セットに一致する任意の文字 エスケープ記号
マッチング回数*(マッチング0回または複数回) +(1回または複数回一致) ? (マッチング0回または1回) {}
合計グループ化|(分之)式1|式2|式3-まず式1でマッチングし、成功すれば成功し、成功しなければ式2を使用し、その後順次行う(3つの式のうち1つが成功すれば成功し、3つが満足しなければ失敗する) ()(パケット)a.パケット-かっこの内容を1つの全体と見なすb.パケット繰返し−パケットを含む正規表現で再パケット可能な後に、前のいくつかのパケットが一致した内容(d{2})abc1-->7878
# , , a,b,c
re_str = r'abc'
result = fullmatch(re_str, 'abc')
print(result)
:
<_sre.sre_match object="" span="(0," match="abc">
"""
:a.
b.
"""
# , , a, , c
re_str = r'a.c'
result = fullmatch(re_str, 'a\c')
print(result)
:
<_sre.sre_match object="" span="(0," match="a\\c">
"""
:a.
b. \w
"""
# , , 、 _, abc
re_str = r'.\w\wabc'
result = fullmatch(re_str, '$ _abc')
print(result)
:
<_sre.sre_match object="" span="(0," match="$ _abc">
"""
: , 、 、
"""
# , , ,
re_str = r'\w\w\s.'
result = fullmatch(re_str, 'a_\t$')
print(result)
:
<_sre.sre_match object="" span="(0," match="a_\t$">
# ,
re_str = r'\d\d\d'
result = fullmatch(re_str, '789')
print(result)
:
<_sre.sre_match object="" span="(0," match="789">
"""
a. \b
b.
: , , ,
:\b , ,
"""
# 'how are', a
re_str = r'\bhow\b are'
result = fullmatch(re_str, 'how are')
print(result)
print(search(r'\b\d\d\d', 'ada 456qwe123asdasd78'))
:
<_sre.sre_match object="" span="(0," match="how are">
<_sre.sre_match object="" span="(4," match="456">
"""
, , ,
"""
re_str = r'^\d\d\d'
result = search(re_str, '789asdjak45897asd78')
print(result)
:
<_sre.sre_match object="" span="(0," match="789">
# ,
re_str = r'\d\d\d$'
result = search(re_str, 'asdasda4563')
print(result)
:
<_sre.sre_match object="" span="(8," match="563">
re_str = r'a\Babc'
result = search(re_str, 'aabc')
print(result)
:
<_sre.sre_match object="" span="(0," match="aabc">
"""
a.
[ ] -
b.
[ 1- 2] - 1 2 , 1 2
[a-zA-z123] - 123
[a-zA-Z\d_] -
"""
# 4 , a b c , 123
re_str = r'[abc]123'
result = fullmatch(re_str, 'a123')
print(result)
# 4 , a-z , , 1-9
re_str = r'[a-z]\d\d[1-9]'
result = fullmatch(re_str, 's875')
print(result)
:
<_sre.sre_match object="" span="(0," match="a123">
<_sre.sre_match object="" span="(0," match="s875">
"""
:^ []
^
"""
# , abc , 123
re_str = r'[^abc]123'
result = fullmatch(re_str, 's123')
print(result)
# , , 123
re_str = r'[^A-Za-z]123'
result = fullmatch(re_str, '5123')
print(result)
:
<_sre.sre_match object="" span="(0," match="s123">
<_sre.sre_match object="" span="(0," match="5123">
"""
a. '\'
\\ -- \
\. -- .
: ,
b. , []
- : , , ,
^ : , ,
] : [] , \
"""
re_str = r'\d\d\.\d\d'
print(fullmatch(re_str, '78.45'))
print(fullmatch(r'[.]', '.'))
print(fullmatch(r'[.]', '2'))
:
<_sre.sre_match object="" span="(0," match="78.45">
<_sre.sre_match object="" span="(0," match=".">
None
マッチング回数
"""
* - 0 ( )
a* - a 0
\d - 0
[a-z]* - 0
"""
# 123 0 , a
re_str = r'a*123'
print(re.fullmatch(re_str, 'aa123'))
print(re.fullmatch(re_str, '123'))
# 123 0 ,
re_str = r'[a-z]*123'
print(re.fullmatch(re_str, 'asd123'))
print(re.fullmatch(re_str, '123'))
:
<_sre.sre_match object="" span="(0," match="aa123">
<_sre.sre_match object="" span="(0," match="123">
<_sre.sre_match object="" span="(0," match="asd123">
<_sre.sre_match object="" span="(0," match="123">
re_str = r'[a-z]+123'
print(re.fullmatch(re_str, 'asd123'))
print(re.fullmatch(re_str, '123'))
:
<_sre.sre_match object="" span="(0," match="asd123">
None
re_str = r'[a-z]?123'
print(re.fullmatch(re_str, 'asd123'))
print(re.fullmatch(re_str, '123'))
print(re.fullmatch(re_str, 'w123'))
# : ,
"""
123
+123
-123
0023
"""
re_str = r'[-+]?[1-9]\d|0*'
print(re.fullmatch(re_str, '456'))
print(re.fullmatch(re_str, '+456'))
print(re.fullmatch(re_str, '0'))
:
None
<_sre.sre_match object="" span="(0," match="123">
<_sre.sre_match object="" span="(0," match="w123">
"""
{M,N} - M N M N
{M,} - M
{,N} - N
{N} - N
"""
print(re.fullmatch(r'a{2,5}', 'aaa'))
# :6-16 ,
re_str = r'[a-zA-z\d]{6,16}'
print(re.fullmatch(re_str, 'asdasd7896'))
:
None
None
<_sre.sre_match object="" span="(0," match="0">
<_sre.sre_match object="" span="(0," match="aaa">
<_sre.sre_match object="" span="(0," match="asdasd7896">
合計グループ化
re_str = r'[a-z]{3}|\d{3}'
print(re.fullmatch(re_str, '879'))
re_str = r'abc([A-Z]{2}|\d{2})'
print(re.fullmatch(re_str, 'abc45'))
# (abc){2} abc 2
re_str = r'(abc){2}'
print(re.fullmatch(re_str, 'abcabc'))
re_str = r'\d{2}abc'
print(re.fullmatch(re_str, '34abc'))
re_str = r'(\d{2})a(\d{3})bc\2'
print(re.fullmatch(re_str, '34a123bc123'))
:
<_sre.sre_match object="" span="(0," match="879">
<_sre.sre_match object="" span="(0," match="abc45">
<_sre.sre_match object="" span="(0," match="abcabc">
<_sre.sre_match object="" span="(0," match="34abc">
<_sre.sre_match object="" span="(0," match="34a123bc123">