ホームページ >バックエンド開発 >Python チュートリアル >Pythonの正規表現の非貪欲・複数行マッチング関数の詳細説明

Pythonの正規表現の非貪欲・複数行マッチング関数の詳細説明

黄舟
黄舟オリジナル
2017-08-08 11:05:142081ブラウズ

この記事では、Python 正規表現の非貪欲および複数行マッチング関数を主に紹介し、Python 正規表現の非貪欲および複数行マッチング関数の実装方法と関連する注意点を例の形で分析します。必要な場合は、以下を参照してください

この記事の例では、Python 正規表現の貪欲でない複数行のマッチング関数について説明します。以下のように、参考のためにみんなと共有してください:

いくつかの定期的なヒント:

1 貪欲でないフラグ


>>> re.findall(r"a(\d+?)","a23b") # 非贪婪模式
    ['2']
>>> re.findall(r"a(\d+)","a23b")
    ['23']

この状況を比較することに注意してください:


>>> re.findall(r"a(\d+)b","a23b")
    ['23']
>>> re.findall(r"a(\d+?)b","a23b") #如果前后均有限定条件,则非匹配模式失效
    ['23']

2 必要に応じて複数の行が一致する場合は、re.S フラグと re.M フラグを追加します

re.S: 。デフォルトでは、カンマは改行文字と一致しません


>>> re.findall(r"a(\d+)b.+a(\d+)b","a23b\na34b")
    []
>>> re.findall(r"a(\d+)b.+a(\d+)b","a23b\na34b",re.S)
    [('23','34')]
>>>

re.M: ^$ フラグはすべての行に一致します。デフォルトでは、^ は通常のパターンに一致する最初の行にのみ一致し、$ は通常のパターンに一致する最後の行にのみ一致します。ただし、^ 記号がない場合は、


>>> re.findall(r"^a(\d+)b","a23b\na34b")
    ['23']
>>> re.findall(r"^a(\d+)b","a23b\na34b",re.M)
    ['23','34']

が表示されるので、再設定する必要はありません。

以上がPythonの正規表現の非貪欲・複数行マッチング関数の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。