正規表現とも呼ばれる正規表現 (英語: Regular Expression、コードでは regex、regexp、または RE と略されることが多い) は、コンピューター サイエンスの概念です。正規表現は、特定のパターンに一致するテキストを取得および置換するためによく使用されます。多くのプログラミング言語は、正規表現を使用した文字列操作をサポートしています。たとえば、Perl には強力な正規表現エンジンが組み込まれています。正規表現の概念は、もともと Unix のツール ソフトウェアによって普及しました。正規表現は、文字列 (通常の文字 (たとえば、a から z までの文字) と特殊文字 (「メタ文字」と呼ばれる) を含む) を操作する論理式であり、事前定義された特定の文字と、これらの特定の文字の組み合わせを使用します。この「ルール文字列」は、文字列のフィルタリング ロジックを表現するために使用されます。正規表現は、テキストの検索時に一致する 1 つ以上の文字列を記述するテキスト パターンです。
くだらないことをたくさん話しても、まだ混乱しているかもしれません。例で説明しましょう。正規表現テスト ツールまたは Python を使用できます。すべてOKです。まず、テキストを入力します。
こんにちは、私の名前はティナ、電話番号は 123456、私のウェブは http://tina.com です。
[a-zA-z]+://[^\s]*
ウェブ リンクを取得できます。つまり本文中のURLなのですが、すごいと思いませんか?
これは、次のような独自の一致ルールがあるためです。
パターン | 説明 |
. | 任意の文字 |
0 個以上の式 | |
1 つ以上の式 |
## ここでよく使われるマッチング方法を紹介します & mdash; & mdash; match () この正規表現が文字列と一致するかどうかを確認できます。 ターゲットのマッチング?,*,\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 ()
res = re.match('hello\s(\d+)sword')
res = re.match('hello.*(\d+)sword')
import re useData = str(input('请输入字符串数据:')) ''' 匹配字符串中的数字,+是匹配前面的子表达式一次或多次 ''' digital = re.findall('\d+',useData) print(digital)
findall() 関数は一致するすべての文字列を返します。戻り値のデータ型は次のとおりです。リスト。
一般的な記号正規表現の一般的な記号について話しましょう。「.」文字は任意の 1 文字と一致します。
「\」文字はエスケープ文字です。 "[…]" は文字セットです。 "(.*?)" は、Python クローラーで最も一般的に使用される文字です。これは貪欲アルゴリズムと呼ばれ、あらゆる文字と一致します。実行して効果を見てみましょう。以下のサンプルコードを見てみましょう。
import re a=‘xxixxjshdxxlovexxsfhxxpythonxx' data=re.findall(‘xx(.*?)xx') print(data)ログイン後にコピー
実行結果
[‘I’、‘love’、‘python’]いわゆる特殊文字 : runoo*b などの特別な意味を持つ文字です。簡単に言えば、任意の文字列の意味を表します。文字列内で * 記号を検索する場合は、* をエスケープする必要があります。つまり、* の前に \ を追加すると、runo*ob は文字列 runo\*ob と一致します。 多くのメタキャラクターは、一致させるときに特別な処理が必要です。これらの特殊文字と一致させるには、まず文字を「エスケープ」する必要があります。つまり、文字の前にバックスラッシュ文字 \ を付けます。次の表に、正規表現の特殊文字を示します。
特殊文字
$ | |
入力文字列の末尾と一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は ‘\n’ または ‘\r’ とも一致します。 $ 文字そのものと一致させるには、$ を使用します。 | () |
. | |