fnmatch.filter()
メソッドを使用して、パターンに一致する文字列をリストから取得します。
fnmatch.fnmatch()
メソッドを使用して、文字列がパターンに一致するかどうかを確認します。
import fnmatch a_list = ['fql.txt', 'jiyik.txt', 'com.csv'] pattern = '*.txt' filtered_list = fnmatch.filter(a_list, pattern) print(filtered_list) # ????️ ['fql.txt', 'jiyik.txt']
正規表現を使用したい場合は、次のサブタイトルまで下にスクロールしてください。
fnmatch.filter
メソッドは、反復可能オブジェクトとパターンを受け入れ、指定されたパターンに一致する反復可能オブジェクト要素のみを含む新しいリストを返します。
例のパターンは、1 つ以上の任意の文字で始まり、.txt
で終わります。
例のパターンにはワイルドカードが 1 つだけ含まれていますが、ワイルドカードは必要なだけ使用できます。
アスタリスク
# はすべて (1 つ以上の文字) に一致することに注意してください。
任意の 1 文字と一致させたい場合は、アスタリスク
# を疑問符
?
ここでは、疑問符を使用して任意の 1 文字と一致する例を示します。
import fnmatch a_list = ['abc', 'abz', 'abxyz'] pattern = 'ab?' filtered_list = fnmatch.filter(a_list, pattern) print(filtered_list) # ????️ ['abc', 'abz']
このパターンは、ab で始まり、その後に任意の 1 文字が続く文字列と一致します。 ワイルドカードを使用して文字列がパターンに一致するかどうかを確認する場合は、
メソッドを使用します。 import fnmatch
a_string = '2023_jiyik.txt'
pattern = '2023*.txt'
matches_pattern = fnmatch.fnmatch(a_string, pattern)
print(matches_pattern) # ????️ True
if matches_pattern:
# ????️ this runs
print('The string matches the pattern')
else:
print('The string does NOT match the pattern')
で終わります。に置き換えます。?
fnmatch.fnmatch このメソッドは、文字列とパターンをパラメータとして受け取ります。文字列がパターンと一致する場合、メソッドは True を返し、それ以外の場合は
False
を返します。 1 つ以上の文字ではなく、任意の 1 文字と一致させたい場合は、アスタリスク# を疑問符
ワイルドカードを使用して正規表現を使用して文字列を一致させる
ワイルドカードを使用して文字列を一致させる:Use
re.match()
メソッドは、文字列が指定されたパターンに一致するかどうかをチェックします。ワイルドカード文字の代わりに
文字を使用します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:py;">import re
a_list = [&#39;2023_fql.txt&#39;, &#39;2023_jiyik.txt&#39;, &#39;2023_com.csv&#39;]
regex = re.compile(r&#39;2023_.*\.txt&#39;)
list_of_matches = [
item for item in a_list
if re.match(regex, item)
]
print(list_of_matches) # ????️ [&#39;2023_fql.txt&#39;, &#39;2023_jiyik.txt&#39;]</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>
re.compile
メソッドは、正規表現パターンを match()
または
これは、正規表現オブジェクトを保存して再利用するため、
re.match または
re.search
正規表現は 2023__
で始まります。文字は、1 つ以上の文字と一致するワイルドカードとして使用されます。
正規表現内の
.*
ドット
.
アスタリスク
#は、前の正規表現 (ドット
.
リスト内包表記を使用して、文字列のリストを反復処理します。 リスト内包表記は、各要素に対して特定の操作を実行するか、条件を満たす要素のサブセットを選択するために使用されます。は正規表現で使用される場合に特別な意味を持つためです。つまり、ドットを処理するためにバックスラッシュを使用します。リテラル文字として。
バックスラッシュ\ 文字を使用してドットをエスケープします。前に見たように、ドット
.
各反復では、
re.match()
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:py;">import re
a_list = [&#39;2023_fql.txt&#39;, &#39;2023_jiyik.txt&#39;, &#39;2023_com.csv&#39;]
regex = re.compile(r&#39;2023_.*\.txt&#39;)
list_of_matches = [
item for item in a_list
if re.match(regex, item)
]
print(list_of_matches) # ????️ [&#39;2023_fql.txt&#39;, &#39;2023_jiyik.txt&#39;]</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>re.match
新しいリストには、パターンに一致する元のリストの文字列のみが含まれます。を返します。
文字列が正規表現パターンと一致しない場合、
match() メソッドは None
任意の 1 文字のみを一致させたい場合は、正規表現内のドット
*.
import re a_list = ['2023_a.txt', '2023_bcde.txt', '2023_z.txt'] regex = re.compile(r'2023_.\.txt') list_of_matches = [ item for item in a_list if re.match(regex, item) ] print(list_of_matches) # ????️ ['2023_a.txt', '2023_z.txt']
ドット
. 改行を除く任意の文字と一致します。 正規表現の読み取りまたは書き込みについてサポートが必要な場合は、正規表現チュートリアルを参照してください。 このページには、すべての特殊文字のリストと多くの役立つ例が含まれています。 正規表現を使用して文字列がパターンに一致するかどうかを確認する場合は、
エスケープせずにドット
. を使用すると、正規表現は、2023__ で始まり、その後に ## で終わる任意の 1 文字が続くものと一致します。 # で終わる文字列。TXT###。
re.match() メソッドを直接使用できます。
import re a_string = '2023_fql.txt' matches_pattern = bool(re.match(r'2023_.*\.txt', a_string)) print(matches_pattern) # ????️ True if matches_pattern: # ????️ this runs print('The string matches the pattern') else: print('The string does NOT match the pattern')
如果字符串与模式匹配,则
re.match()
方法将返回一个匹配对象,如果不匹配,则返回 None 。
我们使用 bool()
类将结果转换为布尔值。
如果要对单个字符使用通配符,请删除星号 *
。
import re a_string = '2023_ABC.txt' matches_pattern = bool(re.match(r'2023_.\.txt', a_string)) print(matches_pattern) # ????️ False if matches_pattern: print('The string matches the pattern') else: # ????️ this runs print('The string does NOT match the pattern')
请注意
,点.
我们没有使用反斜杠作为前缀用于匹配任何单个字符,而点.
我们以反斜杠 \ 为前缀的被视为文字点。
示例中的字符串与模式不匹配,因此 matches_pattern
变量存储一个 False 值。
以上がPython でワイルドカードを使用して文字列を照合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。