【貂蝉がプログラミングを学ぶ】MicroPythonマニュアルの組み込みモジュール:正規表現の機能

ここに画像の説明を挿入します

MicroPython は、組み込みシステムで Python 3 プログラミング言語を実行するために設計されたインタープリターの軽量バージョンです。通常の Python と比較して、MicroPython インタープリターは小さく (わずか約 100 KB)、バイナリの実行可能ファイルにコンパイルされて実行されるため、実行効率が高くなります。軽量のガベージ コレクション メカニズムを使用し、リソースに制約のあるマイクロコントローラーに対応するために Python 標準ライブラリの大部分を削除します。

MicroPython の主な機能は次のとおりです。
1. 構文と関数は標準の Python と互換性があるため、学習と使用が簡単です。Python のコア構文のほとんどがサポートされています。
2. ハードウェアに直接アクセスして制御し、Arduino のように GPIO、I2C、SPI などを制御します。
3.ファイルシステム、ネットワーク、グラフィカルインターフェースおよびその他の機能を提供する強力なモジュールシステム。
4. クロスコンパイルをサポートし、インタプリタよりも 10 ~ 100 倍高速な効率的なネイティブ コードを生成します。
5. コード量が少なくメモリ使用量も少ないため、メモリの少ない MCU や開発ボードでの実行に適しています。
6. オープンソースライセンス、無料で使用できます。シェル対話型環境は、開発とテストに便利です。
7. 内蔵 I/O ドライバーは、ESP8266、ESP32、STM32、micro:bit、コントロール ボード、PyBoard などの多数のマイクロコントローラー プラットフォームをサポートします。活発なコミュニティがあります。

MicroPython のアプリケーション シナリオには次のものが含まれます。
1. 組み込み製品のプロトタイプとユーザー インタラクションを迅速に構築します。
2. 小さなプログラム可能なハードウェア プロジェクトをいくつか作成します。
3. 初心者がPythonやIoTプログラミングを学ぶのに役立つ教育ツールとして。
4. 高度な制御とクラウド接続のためのスマート デバイス ファームウェアを構築します。
5. モノのインターネット、組み込みインテリジェンス、ロボットなどのさまざまなマイクロコントローラー アプリケーション

MicroPython を使用する際の注意事項:
1. メモリとフラッシュのスペースには限りがあります。
2. 解釈と実行の効率は C 言語ほど良くありません。
3. ライブラリ機能の一部が標準版と異なります。
4. プラットフォームに合わせて構文を最適化し、標準の Python との相違点を修正します。
5. メモリ リソースを合理的に使用し、大きなメモリ ブロックを頻繁に割り当てることを避けます。
6. ネイティブ コードを使用して、速度が重要な部分のパフォーマンスを向上させます。
7. 抽象化を適切に使用して、基礎となるハードウェア操作をカプセル化します。

一般に、MicroPython は Python をマイクロコントローラーの分野に導入します。これは、プログラミングの敷居を下げるだけでなく、優れたハードウェア制御機能も提供する重要な革新です。さまざまなタイプのモノのインターネットやインテリジェント ハードウェアの開発に非常に適しています。

ここに画像の説明を挿入します
MicroPython の組み込みモジュール re は、単純な正規表現操作を実装するために使用されるモジュールで、文字列のパターン マッチング、置換、分割などの操作を実行するために使用できます。その主な特徴は次のとおりです。

1. 一致効率と再利用性を向上させるために、compile() メソッドを使用して正規表現文字列を正規表現オブジェクトにコンパイルできます。
2. match() メソッドと search() メソッドを使用して文字列内で最初に一致する位置を検索したり、sub() メソッドを使用して文字列内の一致するすべての部分文字列を置き換えたりできます。
3. Split() メソッドを使用して、正規表現に基づいて文字列を複数の部分文字列に分割できます。
4. group()、groups()、start()、end()、span() およびその他のメソッドを使用して、一致する部分文字列、グループ、位置など、一致するオブジェクトの詳細情報を取得できます。
5. 文字セット、量指定子、グループ化、選択、エスケープなどの一部の一般的な正規表現構文をサポートしますが、名前付きグループ、非キャプチャ グループ、アサーションなどの一部の高度な構文はサポートしません。

re モジュールのアプリケーション シナリオには次のものが含まれます。

1. 入力形式の検証、情報の抽出、データのクリーニングなど、一部のテキスト処理または分析タスクに使用されます。
2. パスワードチェック、テンプレート置換、構文分析など、複雑な文字列操作またはロジックを実装するために使用されます。
3. メタキャラクター、貪欲と非貪欲、バックトラッキングなどの正規表現に関連する知識やスキルを学習または指導するために使用されます。

re モジュールに関する注意事項は次のとおりです。

1. re モジュールは CPython モジュールのサブセットを実装しており 1、エスケープ文字自体をサポートしていない 1。そのため、CPython の機能およびパフォーマンスと完全な互換性はありません。
2. re モジュールは POSIX 拡張正規表現に基づく構文 12 を使用しており、他の言語やツールとは異なる場合があるため、構文の違いや互換性の問題に注意する必要があります。
3. re モジュールによって使用されるコールバック関数は、割り込みコンテキストで実行されます (1234)。システムのパフォーマンスと安定性に影響を与えることを避けるために、複雑な操作や時間のかかる操作の実行を避けるために、コールバック関数はできるだけ短く高速である必要があります。

以下は、MicroPython の組み込みモジュールに関するいくつかの実際的なアプリケーション ケースです。

ケース 1: re.match() メソッドを使用して電子メール アドレスの形式を確認する

# 导入re模块
import re

# 定义一个邮箱地址格式的正则表达式
email_regex = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'

# 编译正则表达式为一个正则表达式对象
email_pattern = re.compile(email_regex)

# 定义一个函数,用于验证邮箱地址格式
def validate_email(email):
    # 调用match()方法,在邮箱地址中查找第一个匹配
    match = email_pattern.match(email)
    # 如果找到了匹配,则返回True
    if match:
        return True
    # 否则返回False
    else:
        return False

# 测试函数
# 使用一些有效和无效的邮箱地址进行测试,并打印结果
emails = ['[email protected]', '[email protected]', 'charlie@invalid', '[email protected].']
for email in emails:
    print(email, validate_email(email))

ケース 2: re.sub() メソッドを使用して機密性の高い単語を置き換える

# 导入re模块
import re

# 定义一个敏感词列表
bad_words = ['stupid', 'idiot', 'fool']

# 将敏感词列表连接成一个正则表达式字符串,并添加边界符
bad_words_regex = r'\b(' + '|'.join(bad_words) + r')\b'

# 编译正则表达式为一个正则表达式对象
bad_words_pattern = re.compile(bad_words_regex, re.IGNORECASE)

# 定义一个函数,用于替换敏感词
def censor(text):
    # 调用sub()方法,在文本中替换所有匹配的敏感词为'*'号,并返回新的文本
    return bad_words_pattern.sub('*', text)

# 测试函数
# 使用一些包含敏感词的文本进行测试,并打印结果
texts = ['You are so stupid!', 'He is an idiot.', 'Don\'t be a fool.']
for text in texts:
    print(censor(text))

ケース 3: re.split() メソッドを使用して単語を分割する

# 导入re模块
import re

# 定义一个非单词字符的正则表达式
non_word_regex = r'\W+'

# 编译正则表达式为一个正则表达式对象
non_word_pattern = re.compile(non_word_regex)

# 定义一个函数,用于分割单词
def split_words(text):
    # 调用split()方法,根据非单词字符将文本分割为多个单词,并返回一个列表
    return non_word_pattern.split(text)

# 测试函数
# 使用一些包含非单词字符的文本进行测试,并打印结果
texts = ['Hello, world!', 'This is a test.', 'MicroPython is awesome.']
for text in texts:
    print(split_words(text))

ケース 4: 文字列パターンの一致:

import re

# 定义一个字符串
text = "Hello, my name is John. I live in New York."

# 使用正则表达式匹配名字
pattern = r"my name is (\w+)"
match = re.search(pattern, text)

if match:
    name = match.group(1)
    print("Name:", name)
else:
    print("Name not found.")

この例では、re モジュールの search() 関数を使用して、文字列内の特定のパターンと一致します。文字列 text を定義し、正規表現パターン my name is (\w+) を使用してその中の名前と一致させます。一致するものがあれば、一致する名前を抽出して出力します。一致が失敗した場合は、名前が見つからないというメッセージを出力します。

ケース 5: 文字列の内容を置き換えます。

import re

# 定义一个字符串
text = "Hello, my name is John. I live in New York."

# 使用正则表达式替换名字
pattern = r"John"
replacement = "Michael"
new_text = re.sub(pattern, replacement, text)

print("New Text:", new_text)

この例では、 re モジュールの sub() 関数を使用して、文字列内の特定のコンテンツを置き換えます。文字列テキストを定義し、正規表現パターン John を使用してその中の名前と一致させます。次に、一致した名前を Michael に置き換え、結果を new_text 変数に保存します。最後に、置換された文字列を出力します。

ケース 6: 文字列の分割:

import re

# 定义一个字符串
text = "apple, banana, orange, mango, kiwi"

# 使用正则表达式分割字符串
pattern = r",\s*"
fruits = re.split(pattern, text)

print("Fruits:", fruits)

この例では、 re モジュールの Split() 関数を使用して、特定のパターンに基づいて文字列を分割します。カンマとスペースで区切られた複数の果物の名前を含む文字列テキストを定義します。次に、正規表現パターン \s* を使用して、カンマと場合によっては複数のスペースを照合します。Split() 関数を使用して、文字列を果物名のリストに分割し、結果を果物変数に保存します。最後に、果物のリストを出力します。これらの実用的なアプリケーション例は、MicroPython の組み込みモジュール re を使用する機能を示しています。re モジュールを使用すると、文字列パターンの照合、文字列の内容の置換、文字列の分割を行うことができます。これらの関数は、テキスト処理、データのクリーニング、抽出などのシナリオで非常に役立ちます。

ケース 7: 正規表現のマッチング

import re

# 匹配邮箱地址
email = "[email protected]"
pattern = r"\w+@\w+\.\w+"
match = re.match(pattern, email)
if match:
    print("邮箱地址有效")
else:
    print("邮箱地址无效")

この例では、 re モジュールをインポートし、それを正規表現のマッチングに使用しました。電子メール アドレス email を定義し、正規表現パターン r"\w+@\w+.\w+" を使用して電子メール アドレスと一致させます。match() 関数を使用して照合を実行し、一致があるかどうかを確認します。一致する結果があれば、メール アドレスは有効であることを意味し、「メール アドレスは有効です」と出力され、一致しない場合は、メール アドレスが無効であることを意味し、「メール アドレスが無効です」と出力されます。この例では、正規表現のマッチングに re モジュールを使用する方法を示します。

ケース 8: 文字列の分割

import re

# 分割字符串
text = "Hello,World! How are you?"
pattern = r"[,\s!]+"
result = re.split(pattern, text)
print("分割结果:", result)

この例では、 re モジュールをインポートし、それを使用して文字列を分割しました。文字列テキストを定義し、正規表現パターン r"[,\s!]+" を使用して文字列を分割します。このモードは、カンマ、スペース、および感嘆符を区切り文字として使用できることを示します。Split() 関数を使用して分割を行い、結果を結果変数に保存します。最後に、セグメンテーションの結果を出力します。この例では、 re モジュールを使用して文字列を分割する方法を示します。

ケース 9: 正規表現の置換

import re

# 替换字符串中的数字
text = "I have 3 apples and 5 oranges."
pattern = r"\d+"
replacement = "X"
result = re.sub(pattern, replacement, text)
print("替换结果:", result)

この例では、 re モジュールをインポートし、正規表現の置換に使用します。いくつかの数値を含む文字列テキストを定義します。次に、正規表現パターン r"\d+" を使用して文字列内の数字を検索します。sub() 関数を使用して置換操作を実行し、見つかった数値を文字列「X」に置き換えます。最後に、置換結果を出力します。この例では、 re モジュールを使用して正規表現置換操作を実行する方法を示します。

これらの例は、実際の MicroPython の re モジュールの使用法を示しています。re モジュールは、一致、分割、置換などの関数を含む正規表現のサポートを提供します。re モジュールを利用すると、MicroPython で複雑なパターン マッチングやテキストの処理を実行できます。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_41659040/article/details/132775931