文字列をPythonの正規表現と一致させる方法

coldplay.xixi
リリース: 2020-10-29 10:18:46
オリジナル
20442 人が閲覧しました

文字列を Python 正規表現で照合する方法: 1. 正規表現 [(. ?)] を使用して単一位置の文字列を抽出します; 2. [(?P …)] を使用します。正規表現 [複数の連続する位置にある文字列と一致します。

文字列をPythonの正規表現と一致させる方法

関連する無料学習の推奨事項:Python ビデオ チュートリアル

Python 正規表現で文字列を照合する方法:

#1. 単一位置での文字列抽出

この中でこの場合、正規表現

(. ?)

を使用して抽出できます。たとえば、文字列「a123b」の場合、ab 間の値 123 を抽出する場合、正規表現を指定して findall を使用すると、状況に一致するすべての条件を含むリストが返されます。コードは次のとおりです:

import re str = "a123b" print re.findall(r"a(.+?)b",str)# 输出['123']
ログイン後にコピー

1.1 貪欲なマッチングと非貪欲なマッチング

文字列「a123b456b」がある場合、必要に応じてa と最初に出現する b の間の値ではなく、最後の b の間のすべての値を使用して、通常の貪欲なマッチングと非貪欲なマッチングを制御できます。

コードは次のとおりです。

import re str = "a123b456b" print re.findall(r"a(.+?)b", str) #输出['123']#?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况 print re.findall(r"a(.+)b", str) #输出['123b456'] print re.findall(r"a(.*)b", str) #输出['123b456']
ログイン後にコピー

1.2 複数行のマッチング

複数行のマッチングが必要な場合は、 re を追加する必要があります。 S と re.M のロゴ。re.S を追加した後デフォルトでは改行文字に一致しますが、改行文字には一致しません。

コードは次のとおりです:

str = "a23b\na34b" re.findall(r"a(\d+)b.+a(\d+)b", str) #输出[] #因为不能处理str中间有\n换行的情况 re.findall(r"a(\d+)b.+a(\d+)b", str, re.S) #s输出[('23', '34')]
ログイン後にコピー

re.M を追加すると、^$ マークが各行に一致します。デフォルトでは、^ と $ は最初の行のみに一致します。

コードは次のとおりです:

str = "a23b\na34b" re.findall(r"^a(\d+)b", str) #输出['23'] re.findall(r"^a(\d+)b", str, re.M) #输出['23', '34']
ログイン後にコピー

2. 複数の連続する位置で文字列を抽出します

この場合、

(? P< ;name>…)

この正規表現は抽出に使用されます。たとえば、webserver のアクセス ログに次の行があるとします。'192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/ search" "Mozilla/5.0"'、ログのこの行のすべての内容を抽出したいので、複数の(?Pexpr)を記述して抽出できます。ここで名前を指定できます。位置文字列で名前が付けられた変数の場合、expr を位置を抽出するための正規表現に変更できます。コードは次のとおりです:

import re line ='192.168.0.1 25/Oct/2012:14:46:34 "GET /api HTTP/1.1" 200 44 "http://abc.com/search" "Mozilla/5.0"' reg = re.compile('^(?P[^ ]*) (?P[^ ]*) "(?P[^"]*)" (?P[^ ]*) (?P[^ ]*) "(?P[^"]*)" "(?P[^"]*)"') regMatch = reg.match(line) linebits = regMatch.groupdict() print linebits for k, v in linebits.items() : print k+": "+v
ログイン後にコピー

出力結果は次のとおりです:

status: 200 referrer: request: GET /api HTTP/1.1 user_agent: Mozilla/5.0 date: 25/Oct/2012:14:46:34size: 44 remote_ip: 192.168.0.1
ログイン後にコピー

以上が文字列をPythonの正規表現と一致させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!