例を使用したPythonの正規表現?
正規表現は、パターンが特定の文字シーケンス(文字列)に存在するかどうかを識別するために使用される一種のプログラミング言語です。
正規表現またはRegexは、文字列に指定された検索パターンが含まれているかどうかを確認するために使用される文字のシーケンスです。
正規表現モジュール
RegExモジュールを使用するには、Pythonにreという組み込みパッケージが付属しており、正規表現を使用する必要があります。 RegExモジュールを使用するには、remoduleをインポートするだけです。
import re
例
import re txt = "Use of python in Machine Learning" x = re.search("^Use.*Learning$", txt) if (x): print("YES! We have a match!") else: print("No match")
出力
YES! We have a match!
正規表現関数
reモジュールは、文字列で一致するものを検索できるようにするいくつかの関数を提供します。
機能 | 説明 |
---|---|
findall | すべての一致を含むリストを返します |
検索 | 文字列内のどこかに一致が見つかった場合、Matchオブジェクトを返します |
分割 | 文字列が各数学で分割されているリストを返します |
sub | 1つまたは複数の一致を文字列に置き換えます |
メタ文字
RegExのメタ文字は、特別な意味を持つ文字です。
キャラクター | 説明 | 例 |
---|---|---|
[] | 文字のセット | 「[a-m]」 |
\ | 特殊文字をエスケープするためにも使用される特殊シーケンスを通知します | 「\d」 |
。 | 改行文字を除くすべての文字 | 「he..o」 |
^ | で始まる | 「^こんにちは」 |
$ | で終わる | 「World$」 |
* | ゼロ以上の発生 | 「aix*」 |
+ | 1つ以上のオカレンス | 「aix+」 |
{} | 正確に指定された発生数 | 「a|{2}」 |
| | または | 「短い|長い」 |
() | キャプチャとグループ化 | |
特別なシーケンス
RegExの特別なシーケンスは、\の後に以下にリストされている文字のいずれかが続き、特別な意味を持ちます-
キャラクター | 説明 | 例 |
---|---|---|
\ A | 指定された文字が文字列の先頭にある場合、一致を返します | 「\APyt」 |
\ b | 指定された文字が単語の先頭または末尾にある場合に一致を返します | r” \ bPython” r” world \ b” |
\ B | 指定された文字が存在するが、単語の先頭(または末尾)にはない場合、一致を返します | r” \ BPython” r” World \ B” |
\ d | 文字列に数字が含まれている場合は一致を返します | 「\d」 |
\ D | 文字列に数字が含まれていない場合は一致を返します | 「\D」 |
\ s | 文字列に空白文字が含まれている一致を返します | 「\s」 |
\ S | 文字列に空白文字が含まれていない一致を返します | 「\S」 |
\ w | 文字列に単語文字が含まれている場合は一致を返します(文字はaからZまでの文字、0から9までの数字、およびアンダースコア_文字です。 | 「\w」 |
\ W | 文字列に単語文字が含まれていない一致を返します | 「\W」 |
\ Z | 指定された文字が文字列の最後にある場合、一致を返します | 「world\Z」 |
セット
正規表現のセットは、特別な意味を持つ角かっこ[]のペア内の文字のセットです。
セット | 説明 |
---|---|
[raj] | 指定された文字(a、r、またはn)のいずれかが存在する場合、一致を返します |
[a-r] | aとrの間のアルファベット順の小文字の一致を返します |
[^ raj] | r、a、jを除く任意の文字に一致するものを返します |
[0123] | いずれかのspeの一致を返します |
[0-9] | 0から9までの任意の数字に一致するものを返します |
[0-3] [0-8] | 00から38までの任意の2桁の数字に一致するものを返します |
[a-zA-Z] | aからzまたはAからZの間のアルファベット順の任意の文字の一致を返します |
[+] | 文字列内の任意の+文字に一致するものを返します |
例-findall()
findall()関数は、すべての一致を含むリストを返します。
#Print a list of all matches (“in”) from a text import re txt = "Use of python in Machine Learning" x = re.findall("in", txt) print(x)からすべての一致( "in")のリストを出力します
出力
['in', 'in', 'in']
上記の出力表示リストには、見つかった順序ですべての一致が含まれています。ただし、一致するものが見つからない場合は、空のリストが表示されます。
上記のプログラムの以下の行、テキストまたは文字列にない「パターン」を変更するだけです。
x = re.findall("Hello", txt)
出力
[]
例-search()関数
search()関数は文字列を検索し、一致が見つかった場合は一致オブジェクトを返します。
ただし、一致するものが複数ある場合は、最初に一致したものだけが返されます。
import re txt = "Python is one of the most popular languages around the world" searchObj = re.search("\s", txt) print("The first white-space character is located in position: ", searchObj.start())
出力
The first white-space character is located in position: 6
ただし、一致するものが見つからない場合は、Noneが返されます。
例-split()関数
RegExのsplit()関数は、一致するたびに文字列が分割されたリストを返します-
# Split at each white-space character import re string = "Python is one of the most popular languages around the world" searchObj = re.split("\s", string) print(searchObj)
結果
['Python', 'is', 'one', 'of', 'the', 'most', 'popular', 'languages', 'around', 'the', 'world']
例-sub()関数
RegExのsub()関数は、一致を選択したテキストに置き換えることです。
#Replace every white-space in the string with _: import re string = "Python is one of the most popular language around the world" searchObj = re.sub("\s", "_", string) print(searchObj)
結果
Python_is_one_of_the_most_popular_language_around_the_world
一致オブジェクト
RegExの一致オブジェクトは、検索と結果に関する情報を含むオブジェクトです。一致するものが見つからない場合、Noneが返されます。
例- 文字列を検索して、一致オブジェクトを返しました。
import re string = "Python is one of the most popular language around the world" searchObj = re.search("on", string) print(searchObj)
結果
<_sre.SRE_Match object; span=(4, 6), match='on'>
一致オブジェクトには、検索と結果に関する情報を取得するために使用されるプロパティとメソッドがあります。
-
.span() –見つかった一致の開始位置と終了位置を含むタプルを返します。
-
.string –関数に渡された文字列を返します。
-
.group() –一致した文字列の部分を返します。
例- 一致した文字列の部分を印刷します。
#Looks for any words that starts with the an upper case “P”: import re string = "Python is one of the most popular language around the world" searchObj = re.search(r"\bP\w+", string) print(searchObj)
結果
<_sre.SRE_Match object; span=(0, 6), match='Python'>
-
JavaScriptの正規表現修飾子を例を挙げて説明する
JavaScript正規表現修飾子は正規表現のオプション部分であり、大文字と小文字を区別しないグローバル検索を実行できます。修飾子を組み合わせることもできます。 以下は修飾子です- 修飾子 説明 g グローバルマッチングを有効にし、最初の一致で停止するのではなく、一致したすべての結果を返します i 大文字と小文字を区別しないマッチングを可能にします m 複数行のマッチングを可能にします 例 以下は、JavaScriptのswitchステートメントで厳密に比較するためのコードです- <!DOCTYPE html> <html la
-
Python正規表現でre.finditer()メソッドをどのように使用しますか?
Pythonのドキュメントによると、 re.finditer(pattern, string, flags=0) 文字列内のREパターンの重複しないすべての一致に対してMatchObjectインスタンスを生成するイテレータを返します。文字列は左から右にスキャンされ、一致するものが見つかった順序で返されます。空の一致が結果に含まれます。 次のコードは、Python正規表現でのre.finditer()メソッドの使用を示しています 例 import re s1 = 'Blue Berries' pattern = 'Blue Berries'