基本原則は、一連の特殊文字と構文を使用してテキスト データを照合し、操作することです。正規表現には通常、一致するテキスト パターンを記述するパターン文字列と、結果の方法と内容を制御する 1 つ以上の特殊文字と構文が含まれます。 Python の正規表現は通常、 re モジュールを使用して実装されます。

WBOY
リリース: 2023-05-10 09:40:14
転載
1292 人が閲覧しました

    正規表現とは何ですか?

    正規表現とも呼ばれる正規表現 (英語: Regular Expression、コードでは regex、regexp、または RE と略されることが多い) は、コンピューター サイエンスの概念です。正規表現は、特定のパターンに一致するテキストを取得および置換するためによく使用されます。多くのプログラミング言語は、正規表現を使用した文字列操作をサポートしています。たとえば、Perl には強力な正規表現エンジンが組み込まれています。正規表現の概念は、もともと Unix のツール ソフトウェアによって普及しました。正規表現は、文字列 (通常の文字 (たとえば、a から z までの文字) と特殊文字 (「メタ文字」と呼ばれる) を含む) を操作する論理式であり、事前定義された特定の文字と、これらの特定の文字の組み合わせを使用します。この「ルール文字列」は、文字列のフィルタリング ロジックを表現するために使用されます。正規表現は、テキストの検索時に一致する 1 つ以上の文字列を記述するテキスト パターンです。

    1. 例の紹介

    くだらないことをたくさん話しても、まだ混乱しているかもしれません。例で説明しましょう。正規表現テスト ツールまたは Python を使用できます。すべてOKです。まず、テキストを入力します。

    こんにちは、私の名前はティナ、電話番号は 123456、私のウェブは http://tina.com です。

                                   [a-zA-z]+://[^\s]*
    ログイン後にコピー

    ウェブ リンクを取得できます。つまり本文中のURLなのですが、すごいと思いませんか?

    これは、次のような独自の一致ルールがあるためです。

    #*0 個以上の式1 つ以上の式
    パターン説明
    .任意の文字
    さらに多くの一致ルールを自分で確認できます。

    ?,*,\d,\w はすべて同等の文字です

    ? は長さの一致と同等です{0,1}

    * は一致する長さと同等です {0,}

    は一致する長さ {1,}# # と同等です

    #\d [0-9]

    \D [^0-9]

    に相当

    \w [A-Za-z_0-9]に相当します

    \W [^A-Za-z_0-9]に相当します

    2. MATCH ()
    ## ここでよく使われるマッチング方法を紹介します & mdash; & mdash; match () この正規表現が文字列と一致するかどうかを確認できます。

    ターゲットのマッチング

    res = re.match('hello\s(\d+)sword')
    ログイン後にコピー

    貪欲なマッチング

    res = re.match('hello.*(\d+)sword')
    ログイン後にコピー

    3.findall()

    これは最も一般的に使用されるものです。どのように使用されるかを見てみましょう。

    import re
     
    useData = str(input('请输入字符串数据:'))
     
    '''
    匹配字符串中的数字,+是匹配前面的子表达式一次或多次
    '''
    digital = re.findall('\d+',useData)
     
    print(digital)
    ログイン後にコピー

    実行結果を見てみましょう

    findall() 関数は一致するすべての文字列を返します。戻り値のデータ型は次のとおりです。リスト。 基本原則は、一連の特殊文字と構文を使用してテキスト データを照合し、操作することです。正規表現には通常、一致するテキスト パターンを記述するパターン文字列と、結果の方法と内容を制御する 1 つ以上の特殊文字と構文が含まれます。 Python の正規表現は通常、 re モジュールを使用して実装されます。

    一般的な記号

    正規表現の一般的な記号について話しましょう。

    「.」文字は任意の 1 文字と一致します。

    「\」文字はエスケープ文字です。

    "[…]" は文字セットです。

    "(.*?)" は、Python クローラーで最も一般的に使用される文字です。これは貪欲アルゴリズムと呼ばれ、あらゆる文字と一致します。

    以下のサンプルコードを見てみましょう。

    import re
     
    a=‘xxixxjshdxxlovexxsfhxxpythonxx'
     
    data=re.findall(‘xx(.*?)xx')
     
    print(data)
    ログイン後にコピー
    実行して効果を見てみましょう。

    実行結果

    [‘I’、‘love’、‘python’]


    特殊文字

    いわゆる特殊文字 : runoo*b などの特別な意味を持つ文字です。簡単に言えば、任意の文字列の意味を表します。文字列内で * 記号を検索する場合は、* をエスケープする必要があります。つまり、* の前に \ を追加すると、runo*ob は文字列 runo\*ob と一致します。

    多くのメタキャラクターは、一致させるときに特別な処理が必要です。これらの特殊文字と一致させるには、まず文字を「エスケープ」する必要があります。つまり、文字の前にバックスラッシュ文字 \ を付けます。次の表に、正規表現の特殊文字を示します。

    特殊文字説明$ () 部分式の開始と終了をマークします。部分式は後で使用するために取得できます。これらの文字と一致させるには、( と ) を使用します。 # 前述の部分式と 0 回以上一致します。 * 文字と一致させるには、* を使用します。 前述の部分式と 1 回以上一致します。文字を一致させるには、 を使用します。 . 改行文字 \n を除く任意の 1 文字と一致します。 . と一致させるには、 . を使用します。

    概念说了一大堆,大家可能也记不住,我直接说几个案例,大家就能明白其他的道理。

    这是某网的HTML,部分片段如下:

    <span class=“price”>§<i>123</i></span>
     
    <span class=“price”>§<i>133</i></span>
     
    <span class=“price”>§<i>156</i></span>
     
    <span class=“price”>§<i>189</i></span>
    ログイン後にコピー

    大家会发现只有中间的一段不一样,而不一样的数据就是我们想要的,我们怎么用正则表达式提取出来呢.

    <span class=“price”>§<i>(.*?)</i></span>
    ログイン後にコピー

    就可以了,我们看看效果吧。

    123
    133
    156
    189

    以上が基本原則は、一連の特殊文字と構文を使用してテキスト データを照合し、操作することです。正規表現には通常、一致するテキスト パターンを記述するパターン文字列と、結果の方法と内容を制御する 1 つ以上の特殊文字と構文が含まれます。 Python の正規表現は通常、 re モジュールを使用して実装されます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    入力文字列の末尾と一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は ‘\n’ または ‘\r’ とも一致します。 $ 文字そのものと一致させるには、$ を使用します。