あ 正規表現または正規表現 は、検索パターンを使用して文字列または文字列のセットを検索する特別な文字シーケンスです。
テキストを特定のパターンと照合することでテキストの有無を検出したり、パターンを 1 つ以上のサブパターンに分割したりできます。
Python の正規表現モジュール
Python には、という名前の組み込みモジュールがあります。 再 Python の正規表現に使用されます。 import ステートメントを使用して、このモジュールをインポートできます。
例: Python で re モジュールをインポートする
Python3
# importing re module> import> re> |
>
>
Python で正規表現を使用するには?
reモジュールをインポートした後、PythonでRegExを使用できます。
例:
この Python コードでは、正規表現を使用して単語を検索します。 ポータル 指定された文字列内で一致した単語の開始インデックスと終了インデックスを出力します。
Python3
import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())> |
>
>出力
Start Index: 34 End Index: 40>
注記: ここで、r 文字 (r'portal') は正規表現ではなく raw を表します。生の文字列は通常の文字列とは少し異なり、 文字をエスケープ文字として解釈しません。これは、正規表現エンジンが独自のエスケープ目的で 文字を使用するためです。
Python 正規表現モジュールを始める前に、メタキャラクターまたは特別なシーケンスを使用して正規表現を実際に記述する方法を見てみましょう。
メタキャラクター
メタキャラクターは特別な意味を持つ文字です。
RE の類似性を理解するには、メタキャラクターが便利で重要です。これらはモジュール re の関数で使用されます。以下はメタキャラクターのリストです。
| メタキャラクター | 説明 |
|---|---|
| 後続の文字の特別な意味を削除するために使用されます Javaのオブジェクトの配列 | |
| [] | 文字クラスを表す |
| ^ | 冒頭と一致する |
| $ | 終わりと一致する |
| 。 | 改行を除く任意の文字と一致します |
| | | OR を意味します (これで区切られた任意の文字と一致します。 |
| ? | 0 個または 1 個の出現に一致します |
| * | 任意の数の出現 (0 出現を含む) |
| + | 1 つ以上の発生 |
| {} | 一致する先行正規表現の出現回数を示します。 |
| () | Regex のグループを囲む |
これらの各メタキャラクターについて詳しく説明します。
1. – バックスラッシュ
バックスラッシュ () は、文字が特別な方法で扱われないようにします。これはメタキャラクターをエスケープする方法と考えることができます。
たとえば、文字列内のドット(.) を検索する場合、ドット(.) はメタ文字の 1 つと同様に特殊文字として扱われることがわかります (上の表を参照)。したがって、この場合は、ドット (.) の直前にバックスラッシュ () を使用して、その特殊性をなくします。よりよく理解するには、以下の例を参照してください。
例:
最初の検索 ( re.search(r'.', s)> ) 2 番目の検索はピリオドだけでなく任意の文字に一致します。 ( re.search(r'.', s)> ) 特にピリオド文字を検索して照合します。
Python3
import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)> |
>
>出力
>
2. [] – 角括弧
角括弧 ([]) は、照合する一連の文字で構成される文字クラスを表します。たとえば、文字クラス [abc] は、任意の 1 つの a、b、または c に一致します。
角括弧内で – を使用して文字の範囲を指定することもできます。例えば、
- [0, 3] は [0123] のサンプルです
- [a-c] は [abc] と同じです
キャレット(^)記号を使用して文字クラスを反転することもできます。例えば、
- [^0-3] は、0、1、2、または 3 を除く任意の数値を意味します
- [^a-c] は、a、b、または c を除く任意の文字を意味します。
例:
このコードでは、正規表現を使用して、文字列内の「a」から「m」の範囲内にあるすべての文字を検索します。の re.findall()> 関数は、そのようなすべての文字のリストを返します。指定された文字列で、このパターンに一致する文字は次のとおりです: 'c'、'k'、'b'、'f'、'j'、'e'、'h'、'l'、'd'、'ぐ。
Python3
import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)> |
>
>出力
['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>
3. ^ – キャレット
キャレット (^) 記号は文字列の先頭と一致します。つまり、文字列が指定された文字で始まるかどうかを確認します。例えば -
- ^g は、geeks、globe、girl、g など、文字列が g で始まるかどうかを確認します。
- ^ge は、geeks、geeksforgeeks などの文字列が ge で始まるかどうかを確認します。
例:
このコードは正規表現を使用して、文字列のリストが次で始まるかどうかを確認します。 の 。文字列が次で始まる場合 一致済みとしてマークされています それ以外の場合は、次のようにラベル付けされます 一致しません。
Python3
import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)> |
>
>出力
Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>
4. $ – ドル
ドル($)記号は文字列の末尾と一致します。つまり、文字列が指定された文字で終わるかどうかをチェックします。例えば-
- s$ は、geeks、ends、s などの で終わる文字列をチェックします。
- ks$ は、geeks、geeksforgeeks、ks など、ks で終わる文字列をチェックします。
例:
このコードは正規表現を使用して、文字列が次で終わるかどうかを確認します。 世界!。 一致するものが見つかった場合は印刷されます 一致が見つかりました! それ以外の場合は印刷されます 一致するものが見つかりません 。
Python3
import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)> |
>
>出力
Match found!>
5. – ドット
ドット(.)記号は、改行文字( )を除く単一の文字にのみ一致します。例えば -
- a.b は、ドットの位置に acb、acbd、abbb などの文字が含まれる文字列をチェックします。
- .. 文字列に少なくとも 2 文字が含まれているかどうかを確認します
例:
このコードは正規表現を使用してパターンを検索します ブラウンフォックス 文字列内で。ドット (.>パターン内の ) は任意の文字を表します。一致するものが見つかった場合は印刷されます 一致が見つかりました! それ以外の場合は印刷されます 一致するものが見つかりません 。
Python3
import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)> |
>
>出力
Match found!>
6. | - または
or 記号は or 演算子として機能します。つまり、or 記号の前後のパターンが文字列内に存在するかどうかをチェックします。例えば -
- a|b は、acd、bcd、abcd など、a または b を含む任意の文字列と一致します。
7。 ? – クエスチョンマーク
疑問符 (?) は正規表現の数量指定子で、先行する要素が 0 回または 1 回一致する必要があることを示します。これにより、要素がオプションであることを指定できます。つまり、要素が 1 回出現することも、まったく出現しないこともあるということです。例えば、
- ab?c は、文字列 ac、acb、dabc には一致しますが、b が 2 つあるため、abbc には一致しません。同様に、abdc についても、b の後に c が続かないため、一致しません。
8.* – スター
スター (*) 記号は、* 記号の前に出現する 0 個以上の正規表現と一致します。例えば -
- ab*c は、文字列 ac、abc、abbbc、dabc などに一致しますが、b の後に c が続かないため、abdc には一致しません。
9. + – プラス
プラス (+) 記号は、+ 記号の前にある 1 つ以上の正規表現と一致します。例えば -
- ab+c は、文字列 abc、abbc、dabc には一致しますが、ac、abdc には一致しません。これは、ac には b がなく、abdc では b の後に c が続かないためです。
10. {m, n} – 中括弧
中括弧は、正規表現に先行する m から n までの繰り返しに一致します。例えば -
- a{2, 4} は、文字列 aaab、baaaac、gaad には一致しますが、abc、bc などの文字列には一致しません。これは、どちらの場合も a が 1 つしかないか、a が存在しないためです。
11. () – グループ
グループ シンボルは、サブパターンをグループ化するために使用されます。例えば -
- (a|b)cd は、acd、abcd、gacd などの文字列に一致します。
特殊なシーケンス
特殊なシーケンスは、文字列内の実際の文字と一致するのではなく、一致する必要がある検索文字列内の特定の位置を示します。よく使用されるパターンを記述しやすくなります。
特殊シーケンスのリスト
| 特別なシーケンス | 説明 | 例 | |
|---|---|---|---|
| A | 文字列が指定された文字で始まる場合に一致します | アフォル | オタク向け |
| 世界のために | |||
| 単語が指定された文字で始まるか終わるかどうかを照合します。 (string) は単語の先頭をチェックし、(string) は単語の終わりをチェックします。 | ge | オタク | |
| 得る | |||
| B | これは の逆です。つまり、文字列は指定された正規表現で始まったり終わったりしてはなりません。 | Bge | 一緒に 冬眠とは何ですか |
| フォージ | |||
| d | 任意の 10 進数字と一致します。これは、設定クラス [0-9] に相当します。 | d | 123 |
| やあ1 | |||
| D | 数字以外の文字と一致します。これは、セット クラス [^0-9] と同等です。 | D | オタク |
| オタク1 | |||
| s | 任意の空白文字と一致します。 | s | やあ、 |
| 紀元前 | |||
| S | 空白以外の任意の文字と一致します | S | BD |
| あいうえお | |||
| で | 任意の英数字と一致します。これはクラス [a-zA-Z0-9_] と同等です。 | で | 123 |
| ギーKs4 | |||
| で | 英数字以外の文字と一致します。 | で | >$ |
| 与える | |||
| と | 文字列が指定された正規表現で終わるかどうかに一致します | アブ | アブダブ |
| バババブ |
正規表現関数
再 モジュールには多くのものが含まれています 機能 これは、一致する文字列を検索するのに役立ちます。
のインスタンス
Python で正規表現を操作するためにこのモジュールによって提供されるさまざまな関数を見てみましょう。
| 関数 | 説明 |
|---|---|
| re.findall() | リスト内で一致するものをすべて検索して返します |
| re.compile() | 正規表現はパターンオブジェクトにコンパイルされます |
| re.split() | 文字またはパターンの出現によって文字列を分割します。 |
| re.sub() | 出現する文字またはパターンをすべて置換文字列に置き換えます。 |
| re.escape() | 特殊文字をエスケープします |
| 研究() | 最初に出現する文字またはパターンを検索します |
これらの RegEx 関数の動作を定義と例で見てみましょう。
1. re.findall()
文字列内のパターンの重複しない一致をすべて文字列のリストとして返します。文字列は左から右にスキャンされ、見つかった順序で一致が返されます。
パターンの出現箇所をすべて検索する
このコードでは正規表現を使用しています ( d+> ) 指定された文字列内の 1 つ以上の数字のシーケンスをすべて検索します。数値を検索し、リストに保存します。この例では、数値を検索して出力します。 123456789 そして 987654321 入力文字列から。
Python3
import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)> |
>
>出力
['123456789', '987654321']>
2. re.compile()
正規表現はパターン オブジェクトにコンパイルされます。パターン オブジェクトには、パターン一致の検索や文字列置換の実行など、さまざまな操作のためのメソッドが含まれます。
例 1:
コードでは正規表現パターンが使用されています [a-e]> 入力文字列内の「a」から「e」までのすべての小文字を検索してリストします。 そう、ギベンソン・スターク氏は言いました。 出力は次のようになります ['e', 'a', 'd', 'b', 'e']> 、一致する文字です。
パイソン
import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))> |
>
>出力
['e', 'a', 'd', 'b', 'e', 'a']>
出力を理解する:
- Aye では大文字と小文字が区別されるため、最初に出現するのは「A」ではなく「e」です。
- 次に出現するのは、sayed の「a」、次にsayd の「d」、続いて Gibenson の「b」と「e」です。最後の「a」は Stark と一致します。
- メタキャラクターのバックスラッシュ「」は、さまざまなシーケンスを示すため、非常に重要な役割を果たします。バックスラッシュをメタキャラクターとして特別な意味を持たずに使用する場合は、「」を使用します。
例 2: セットクラス [s,.] は、任意の空白文字、「,」、または「.」と一致します。
このコードは正規表現を使用して、指定された入力文字列内のすべての単一の数字と一連の数字を検索してリストします。 1桁の数字を見つけます d> と数字のシーケンス d+> 。
パイソン
import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> |
>
>出力
['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>
例 3:
このコードは正規表現を使用して、入力文字列内の単語文字、単語文字のシーケンス、および単語以外の文字を検索してリストします。一致した文字またはシーケンスのリストが提供されます。
パイソン
import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))> |
>
>出力
['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>
例 4:
このコードでは、正規表現パターン「ab*」を使用して、入力文字列 ababbaabbb 内で出現する「ab」の後に 0 個以上の「b」文字が続くものをすべて検索してリストします。次の一致リストを返します: ['ab', 'abb', 'abbb']。
パイソン
import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))> |
>
イラストレーターの上付き文字
>出力
['ab', 'abb', 'a', 'abbb']>
出力を理解する:
- 私たちの RE は ab* で、「a」に任意の no が付きます。 0 から始まる「b」。
- 出力「ab」は、単一の「a」に単一の「b」が伴うため有効です。
- 出力「abb」は、1 つの「a」に 2 つの「b」が伴うため有効です。
- 出力「a」は、単一の「a」に 0 個の「b」が伴うため有効です。
- 出力「abbb」は、単一の「a」に 3 つの「b」が伴うため有効です。
3. re.split()
文字またはパターンの出現によって文字列を分割し、そのパターンが見つかると、文字列の残りの文字が結果のリストの一部として返されます。
構文:
re.split(pattern, string, maxsplit=0, flags=0)>
最初のパラメータである pattern は正規表現を表し、string はパターンが検索され、分割が発生する指定された文字列です。maxsplit が指定されていない場合はゼロ '0' とみなされ、ゼロ以外の値が指定された場合は、多くてもその程度の分割が発生します。 maxsplit = 1 の場合、文字列は 1 回だけ分割され、長さ 2 のリストが生成されます。フラグは非常に便利で、コードを短縮するのに役立ちます。フラグは必須のパラメータではありません。例: この分割では flags = re.IGNORECASE 、大文字と小文字、つまり小文字または大文字は無視されます。
例 1:
単語以外の文字とスペースを区切り文字として使用して文字列を分割し、単語を返します。 ['Words', 'words', 'Words']> 。アポストロフィを単語以外の文字と見なします。 ['Word', 's', 'words', 'Words']> 。単語以外の文字と数字を使用して分割します。 ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> 。区切り文字として数字を使用して分割します。 ['On ', 'th Jan ', ', at ', ':', ' AM']> 。
パイソン
from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))> |
>
>出力
['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>
例 2:
最初のステートメントは、1 つ以上の数字が最初に出現した位置で文字列を分割します。 ['On ', 'th Jan 2016, at 11:02 AM']> 。 2 番目は、小文字の a から f を区切り文字として使用し、大文字と小文字を区別せずに文字列を分割します。 ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>。 3 番目は、小文字の a から f を区切り文字として使用し、大文字と小文字を区別して文字列を分割します。 ['', 'ey, Boy oh ', 'oy, ', 'ome here']> 。
パイソン
import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))> |
>
>出力
['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>
4. re.sub()
関数内の 'sub' は SubString を表し、指定された文字列 (3 番目のパラメーター) 内で特定の正規表現パターンが検索され、部分文字列パターンが見つかったら repl (2 番目のパラメーター) に置き換えられ、カウントがチェックして回数を維持します。これが起こります。
構文:
re.sub(pattern, repl, string, count=0, flags=0)>
例 1:
- 最初のステートメントは、出現するすべての「ub」を「~*」に置き換えます (大文字と小文字は区別されません)。
'S~*ject has ~*er booked already'>。 - 2 番目のステートメントは、出現するすべての「ub」を「~*」に置き換えます (大文字と小文字が区別されます)。
'S~*ject has Uber booked already'>。 - 3 番目のステートメントは、最初に出現した「ub」を「~*」に置き換えます (大文字と小文字は区別されません)。
'S~*ject has Uber booked already'>。 - 4 番目は、「AND」を「&」に置き換えます (大文字と小文字は区別されません)。
'Baked Beans & Spam'>。
パイソン
import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))> |
>
>出力
S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>
5. re.subn()
subn() は、出力を提供する方法を除いて、あらゆる点で sub() に似ています。文字列だけではなく、置換文字列と新しい文字列の合計のカウントを含むタプルを返します。
構文:
re.subn(pattern, repl, string, count=0, flags=0)>
例:
re.subn()> 文字列内のパターンのすべての出現を置換し、変更された文字列と行われた置換の数を含むタプルを返します。これは、大文字と小文字を区別する置換と、大文字と小文字を区別しない置換の両方に役立ちます。
パイソン
import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])> |
>
>出力
('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already> 6. re.escape()
英数字以外の文字列をすべてバックスラッシュで返します。これは、正規表現のメタ文字が含まれる可能性のある任意のリテラル文字列と一致する場合に便利です。
構文:
文字列を文字に変換する
re.escape(string)>
例:
re.escape()> 文字列内の特殊文字をエスケープするために使用され、正規表現のパターンとして安全に使用できるようになります。これにより、正規表現で特別な意味を持つ文字がすべてリテラル文字として扱われるようになります。
パイソン
import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))> |
>
>出力
This is Awesome even 1 AM I Asked what is this [a-9], he said ^WoW>
7. re.search()
このメソッドは None を返すか (パターンが一致しない場合)、re.MatchObject に文字列の一致部分に関する情報が含まれます。このメソッドは最初の一致後に停止するため、データの抽出よりも正規表現のテストに最適です。
例: パターンの出現を検索する
このコードは、正規表現を使用して、指定された文字列内のパターンを検索します。一致するものが見つかった場合は、文字列の一致した部分を抽出して出力します。
この特定の例では、6 月 24 日に生まれた入力文字列で、月 (文字) とその後に続く日 (数字) で構成されるパターンを検索します。一致するものが見つかった場合は、完全に一致する月を出力します。 、そして当日。
Python3
import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >print> (>'Day: %s'> %> (match.group(>2>)))> > else>:> >print> (>'The regex pattern does not match.'>)> |
>
>出力
Match at index 14, 21 Full match: June 24 Month: June Day: 24>
セット
あ セット 「[]」括弧で囲まれた一連の文字です。セットは、括弧内に指定された文字セット内の 1 つの文字と一致するために使用されます。以下はセットのリストです。
| セット | 説明 |
|---|---|
| {n,} | 先行する文字またはグループを定量化し、少なくとも n 個の出現と一致します。 |
| * | 先行する文字またはグループを定量化し、0 個以上の出現と一致します。 |
| [0123] | 指定された数字 (0、1、2、または 3) と一致します。 |
| [^アーン] | a、r、n を除く任意の文字に一致します |
| d | 任意の数字 (0 ~ 9) と一致します。 |
| [0-5][0-9] | 00 と 59 の任意の 2 桁の数字に一致します |
| で | 任意の英数字 (a ~ z、A ~ Z、0 ~ 9、または _) と一致します。 |
| [あ~ん] | a から n までの任意の小文字のアルファベットと一致します。 |
| D | 数字以外の文字と一致します。 |
| [アーン] | 指定された文字 (a、r、または n) のいずれかが存在する場所に一致します |
| [a-zA-Z] | a と z の間の任意の文字 (小文字または大文字) に一致します |
| [0-9] | 0 から 9 までの任意の数字と一致します |
オブジェクトの一致
Match オブジェクトには、検索と結果に関するすべての情報が含まれており、一致するものが見つからない場合は None が返されます。 match オブジェクトの一般的に使用されるメソッドと属性をいくつか見てみましょう。
1. 文字列と正規表現を取得する
一致する 属性は渡された正規表現を返し、 一致する文字列 属性は渡された文字列を返します。
例: 一致したオブジェクトの文字列と正規表現を取得する
コードは文字を検索します G 文字列内の単語境界で GeeksForGeeks へようこそ 正規表現パターンを出力します ( res.re> ) そして元の文字列 ( res.string> ) 。
Python3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)> |
>
>出力
re.compile('G') Welcome to GeeksForGeeks> 2. 一致したオブジェクトのインデックスを取得する
- start() メソッドは、一致した部分文字列の開始インデックスを返します。
- end() メソッドは、一致した部分文字列の終了インデックスを返します。
- scan() メソッドは、一致した部分文字列の開始インデックスと終了インデックスを含むタプルを返します。
例: 一致したオブジェクトのインデックスを取得する
コードは、文字列 Welcome to GeeksForGeeks 内の単語境界で部分文字列 Gee を検索し、一致の開始インデックスを出力します (res.start()>)、一致の終了インデックス (res.end()>)、および一致の期間 (res.span()>)。
Python3
import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())> |
>
>出力
11 14 (11, 14)>
3. 一致する部分文字列の取得
group() メソッドは、パターンが一致する文字列の部分を返します。よりよく理解するには、以下の例を参照してください。
例: 一致する部分文字列の取得
このコードは、文字列 Welcome to GeeksForGeeks 内で、スペースと文字「t」が後に続く 2 つの非数字文字のシーケンスを検索し、一致したテキストを次を使用して出力します。 res.group()> 。
Python3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())> |
>
>出力
me t>
上の例では、パターンは、スペースが続き、そのスペースの後に t が続く少なくとも 2 文字を含む文字列を指定します。
関連記事:
参照:
https://docs.python.org/2/library/re.html
Python の RegEx について説明し、RegEx Python のメタキャラクター、関数、特殊シーケンスについて説明しました。
正規表現は Python の非常に重要な概念です。これを簡単に説明しようとしました。あなたの Python の旅に役立つことを願っています!!