ディレクトリ
モジュールの再
reモジュールで正規表現の関係
1:正規表現は、独立した技術です。
2:定期的には、任意の言語で使用することができます。
3:Pythonの正規表現を使用するためには、モジュールを再する必要があります。
正規表現
正規表現は、それが簡単に文字列がパターンに一致するかどうかを確認するためにあなたを助けることができる、特別な文字列です。
- メタキャラクタ
メタキャラクタ | 一致したコンテンツ |
---|---|
。 | 改行事故以外の任意の文字に一致します |
\ワット | マッチ文字または数字またはアンダースコア |
\ sの | 空白にマッチします |
\ dは | マッチング番号 |
\ nは | 改行にマッチします |
\トン | マッチングタブ |
\ B | 単語の末尾にマッチ |
^ | 文字列の先頭にマッチします |
$ | 文字列の末尾 |
\ W | 非マッチング文字や数字またはアンダースコア |
\ D | 非数値のマッチング |
\ S | 非空白文字をマッチング |
| B | 一致する文字または文字B |
() | 括弧内の式と一致する、また基を表します |
[...] | 文字の文字セットと一致します |
[^ ...] | 文字セットの文字以外のすべての文字にマッチします |
- 数量詞
数量詞 | 前記の使用方法の名前 |
---|---|
* | 繰り返しの0回以上 |
+ | 繰り返しの1回以上 |
? | 0回または1回を繰り返します |
{N} | N回 |
{N} | 繰り返さn回以上 |
{N、M} | n回のM倍に |
違いかどうかを定期的にチェック
# 纯python代码校验
while True:
phone_number = input('请输入你的手机号码>>>:').strip()
if len(phone_number) == 11 \
and phone_number.isdigit() \
and(phone_number.startswith('13')) \
or(phone_number.startswith('14')) \
or(phone_number.startswith('15')) \
or(phone_number.startswith('16')) \
or(phone_number.startswith('17')) \
or(phone_number.startswith('18')):
print('手机号码格式正确')
else:
print('手机号码格式不正确')
# 正则表达式校验
import re
phone_number = input('请输入你的手机号码>>>:').strip()
if re.match('^(13|14|15|16|17|18)[0-9]{9}$',phone_number):
print('手机号码格式正确')
else:
print('手机号码格式不正确')
オンラインテストの正規表現
ただ、テストの正規表現:http://tool.chinaz.com/regex/
正規表現のシナリオ:爬虫類、データ分析
正規表現記号:
- 文字セット[]
式の中の文字列の間の関係は、ドメインです
- ^ $記号と組み合わせて使用
2つの書き込みの途中には、一致する文字列はそれも考えていないより少し、あるものでなければならない何を、コンフィギュレーションの内容の正確さが制限されます。
- ABC | AB
|フロントを置くようにしてくださいするのに長い時間。
- ^ [^]
^ [^]、文字列の先頭を制限し、外部に直接書く否定。
- パケット()
定期的な複数のシンボルは、全体として同じ回数、または他の操作を繰り返す場合には、パケットの形で使用することができます。
学習:
- dおよび\ W、\ S \ \ W、\ sは、\ Dは逆の関係と一致する(両方の組み合わせは、すべてが一致することです)
- \ Tマッチタブ(タブ)
- \ Bは、指定された単語のアイデアの末尾にマッチ
数量詞:
- +:123456がある場合は、\ dは、\ dは数字のみに一致しますが、プラス+は、あなたが一度にすべてを一致させることができます。+は、デフォルトの試合がnで(良い)貪欲で、1回以上繰り返すことを示します。
- *:0回以上にマッチ
- ?:0または1の一致
- {N}:明示的一致の数を指定します
注意:
1:マッチのデフォルトを定期的には貪欲マッチ(詳細を一致させよう)です。あなたは署名することができますか?非貪欲貪欲マッチング(整合不活性)となるように一致させることができます。
2:数量は、シンボルの背後に定期的に従わなければなりません。
3:数量詞は次の定期的なシンボルと、それを制限することができます。
reモジュールの基本的な使用
正規表現のマッチングは再モジュールを導入する必要は正規表現を使用してのpython、文字列を処理するために使用されます
- findAll
import re
res = re.findall('a','apple apple apple') # 返回所有满足匹配条件的结果,放在列表里。
print(res)
# ['a', 'a', 'a']
- サーチ
import re
res = re.search('a','Apple apple apple') # 函数会在字符串中查找匹配,找到第一个匹配和返回一个包含匹配信息的对象。
print(res)
print(res.group()) # 如调用 group 可以取出返回的对象,如果返回的是None就会直接报错
if res: # 当返回值为 None 时,就不会执行 group,不会报错
print(ret.group())
# <_sre.SRE_Match object; span=(5, 6), match='a'>
# a
- 一致
import re
res = re.match('a','apple apple apple')
print(res)
print(res.group())
# match是从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个对象,需要用group才能显示,如果没匹配上就返回None,调用group()就会报错
# <_sre.SRE_Match object; span=(0, 1), match='a'>
# a
その他の方法
- スプリット
import re
res = re.split('[ab]','abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(res)
# ['', '', 'cd']
- サブ
import re
res = re.sub('\d','A','apple1apple2apple3') # 将字符串中的数字替换成'A'
res1 = re.sub('\d','A','apple1apple2apple3',1) # 参数1表示替换1个
print(res)
print(res1)
# appleAappleAappleA
# appleAapple2apple3
- SUBN
import re
res = re.subn('\d','A','apple1apple2apple3') # 将数字替换成'A'后,返回元组(替换结果,替换个数)
print(res)
# ('appleAappleAappleA', 3)
- コンパイル
import re
obj = re.compile('\d{3}') # 将正则表达式编译成一个正则表达式对象,规定要匹配的是3个数字
res = obj.search('app111app') # 正则表达式对象调用 search,参数为待匹配的字符串
print(res.group())
# 111
- クリーブ
import re
res = re.finditer('\d','1apple2apple3456') # finditer 返回一个存放匹配结果的迭代器
print(res)
print(next(res).group()) # 查看第一个结果
print(next(res).group()) # 查看第二个结果
print([i.group() for i in res]) # 查看剩余的结果
# <callable_iterator object at 0x00000070AA9CC438>
# 1
# 2
# ['3', '4', '5', '6']