#記事ディレクトリ
import re
このメモは初心者向けチュートリアルと Zhihu チュートリアルに基づいており、私自身の学習経験の一部が組み込まれています。
1. 正規表現パターン
ハイライトは、実際の状況に応じて実際に照合できるため、私が追加したものです。
私はここで少し怠けていて、初心者向けチュートリアルのスクリーンショットを撮りました。
2.1.
re.IGNORECASE(re.I
)セクション 1 は定数ですが、
関数はこのセクション全体で使用される関数であるため、簡単に説明する必要があります。 re.findall(pattern, string, flag=0)
: 文字列内の任意の位置から検索してリストを返します。 pattern
は照合する文字 (文字列)、string
は検索ソース、flag
は修飾子、デフォルトは 0
の機能は、文字の大文字と小文字を無視することです <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">text = "I'm Jasmine-Feng. My student number is No. 321432"pattern = r"Jasmine-FENG"print('Default: ', re.findall(pattern,text))print('Ignore upper/lower case: ', re.findall(pattern,text,flags=re.I))</pre><div class="contentsignin">ログイン後にコピー</div></div>
パターンには r 文字列 が割り当てられます。この r 文字列はエスケープを避けるためのもので、r は raw の略で、そのままにすることを意味します。このブログ投稿を参照してください。一般に、正規表現を使用する場合は、この r 文字列が使用されます。 Default: []Ignore upper/lower case: ['Jasmine-Feng']Process finished with exit code 0
re.ASCII(re.A
)##re.A
これには中国語の文字は含まれていないため、修飾子が
re.A の場合、中国語の文字は一致しません~
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 = "我\t是Jasmine-F\neng. 我%的◉学号是No. 321432"pattern = r'.*'print('Default: ', re.findall(pattern,text))print('DOTALL: ', re.findall(pattern,text,re.S))</pre><div class="contentsignin">ログイン後にコピー</div></div>
.*
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 = "我\t是Jasmine-F\neng. 我%的◉\n学号是No. 321432"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
verbose は「詳細で長い」という意味で、この修飾子を使用するとコメントを追加できます
正規表現に。
ではなく、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. 単一の一致を見つける関数
関数
|
match |
| ##fullmatch|
| 実際、最初は自分でサンプルを作成しましたが、ブラウザが誤ってそれを閉じてしまい、保存しないでください(私の精神は直接爆発しました)
以上がPython 正規表現に関する注意事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。