Python 正規表現に関する注意事項

coldplay.xixi
リリース: 2021-02-01 17:58:34
転載
1819 人が閲覧しました

Python 正規表現に関する注意事項

#記事ディレクトリ

    0、序文
  • 1、正規表現パターン
  • 2正規表現修飾子 - オプションのフラグ
    • 2.1、`re.IGNORECASE`(`re.I`)
    • 2.2、`re.ASCII` (`re. A`)
    • 2.3、`re.DOTALL` (`re.S`)
    • 2.4、`re.MULTILINE`(`re.M`)
    • 2.5 , `re.VERBOSE`(re.X)
    • 2.6, 修飾子の重ね合わせ
  • #3, 正規表現関数
    • 3.1. 単一の一致を見つける関数
      • 例 3.1.1
      • 例 3.1.2
      • 例 3.1. 3
    • 3.2. 複数の一致を検索する関数
      • 例 3.2.1
    • 3.3. 分割
      • ##例 3.3.1
    ##
    import re
    ログイン後にコピー
0、前書き

このメモは初心者向けチュートリアルと Zhihu チュートリアルに基づいており、私自身の学習経験の一部が組み込まれています。

1. 正規表現パターン

Python 正規表現に関する注意事項ハイライトは、実際の状況に応じて実際に照合できるため、私が追加したものです。


Python 正規表現に関する注意事項 私はここで少し怠けていて、初心者向けチュートリアルのスクリーンショットを撮りました。

2. 正規表現修飾子 - オプションのフラグ

2.1.

re.IGNORECASE(re.I )セクション 1 は定数ですが、

re.findall

関数はこのセクション全体で使用される関数であるため、簡単に説明する必要があります。 re.findall(pattern, string, flag=0)
: 文字列内の任意の位置から検索してリストを返します。 pattern は照合する文字 (文字列)、string は検索ソース、flag は修飾子、デフォルトは 0

re.I

の機能は、文字の大文字と小文字を無視することです <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">text = &quot;I'm Jasmine-Feng. My student number is No. 321432&quot;pattern = r&quot;Jasmine-FENG&quot;print('Default: ', re.findall(pattern,text))print('Ignore upper/lower case: ', re.findall(pattern,text,flags=re.I))</pre><div class="contentsignin">ログイン後にコピー</div></div>

N.B.

パターンには r 文字列 が割り当てられます。この r 文字列はエスケープを避けるためのもので、r は raw の略で、そのままにすることを意味します。このブログ投稿を参照してください。一般に、正規表現を使用する場合は、この r 文字列が使用されます。

Default:  []Ignore upper/lower case:  ['Jasmine-Feng']Process finished with exit code 0
ログイン後にコピー
デフォルトでは大文字と小文字が区別され、ENG は見つかりませんが、区別されない場合は eng が見つかります。

2.2.

re.ASCII(re.A)##re.A

の機能は次のとおりです。 ASCII コードでサポートされている文字のみに一致します。具体的にはどの文字を指しますか?下の写真は百度百科事典からのものです。

これには中国語の文字は含まれていないため、修飾子が
re.APython 正規表現に関する注意事項 の場合、中国語の文字は一致しません~

text = "我是Jasmine-Feng. 我的学号是No. 321432"pattern = r"\w+"print('Default: ', re.findall(pattern,text))print('ASCII: ', re.findall(pattern,text,flags=re.A))
ログイン後にコピー
\ w は、1 つ以上の英数字および下線付きの中国語文字と一致するために使用されます。

Default:  ['我是Jasmine', 'Feng', '我的学号是No', '321432']ASCII:  ['Jasmine', 'Feng', 'No', '321432']Process finished with exit code 0
ログイン後にコピー
2.3, re.DOTALL

re.S正規表現パターンでは、.

が使用されます。

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">text = &quot;我\t是Jasmine-F\neng. 我%的◉学号是No. 321432&quot;pattern = r'.*'print('Default: ', re.findall(pattern,text))print('DOTALL: ', re.findall(pattern,text,re.S))</pre><div class="contentsignin">ログイン後にコピー</div></div>Python 正規表現に関する注意事項.*

は、長さが at の文字と一致するために使用されます。少なくとも 0 (文字列)、うーん、ナンセンスのようですね?実際、段落全体が改行文字によって切り詰められない限り、文字列全体 (および空の文字列) を取得できます。

Default:  ['我\t是Jasmine-F', '', 'eng. 我%的◉学号是No. 321432', '']DOTALL:  ['我\t是Jasmine-F\neng. 我%的◉学号是No. 321432', '']Process finished with exit code 0
ログイン後にコピー
2.4、re.MULTILINE

(re.M)$

位置の一致文字列の最後まで、

# は文字列の先頭を見つけます。デフォルトでは、改行を折り返した場合、新しい行の先頭/末尾を見つけることはできません。ただし、## で変更すると、 #re.M ははい、複数行モードです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">text = &quot;我\t是Jasmine-F\neng. 我%的◉\n学号是No. 321432&quot;pattern = r'.$'pattern2 = r'^.'print('Default, end: ', re.findall(pattern, text))print('MULTILINE, end: ', re.findall(pattern, text, re.M))print('Default, start: ', re.findall(pattern2, text))print('MULTILINE, start: ', re.findall(pattern2, text, re.M))</pre><div class="contentsignin">ログイン後にコピー</div></div> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Default, end:  ['2']MULTILINE, end:  ['F', '◉', '2']Default, start:  ['我']MULTILINE, start:  ['我', 'e', '学']Process finished with exit code 0</pre><div class="contentsignin">ログイン後にコピー</div></div>2.5、re.VERBOSE

(re.X)

verbose は「詳細で長い」という意味で、この修飾子を使用するとコメントを追加できます正規表現に。

text

ではなく、pattern に追加していることに注意してください。最初は text にコメントを追加できると思ったのですが、長時間デバッグしても結果が得られませんでした。 。 。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">text = '朋友们好啊!我是xxxxxx拳掌门人xxx~'pattern = r'''朋友们  # 主语               好啊!  # 谓语            '''print(re.findall(pattern, text,re.VERBOSE))</pre><div class="contentsignin">ログイン後にコピー</div></div> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">['朋友们好啊!']Process finished with exit code 0</pre><div class="contentsignin">ログイン後にコピー</div></div>2.6. 修飾子の重ね合わせ

修飾を重ね合わせるには、| を使用します。

text = 'Hello everybody!\n我是xxxxxx拳掌门人xxx~'pattern = r'BODY.*$'print(re.findall(pattern, text, re.I))print(re.findall(pattern, text, re.M))print(re.findall(pattern, text, re.M | re.I))
ログイン後にコピー
[][]['body!']Process finished with exit code 0
ログイン後にコピー

3. 正規表現関数

3.1. 単一の一致を見つける関数

関数関数##search任意の位置から検索を開始最初から検索します。完全に一致する必要はありません##fullmatch最初から検索します。完全に一致する必要があります。実際、最初は自分でサンプルを作成しましたが、ブラウザが誤ってそれを閉じてしまい、保存しないでください(私の精神は直接爆発しました)
match

以上がPython 正規表現に関する注意事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート