Python正規表現で「大文字+小文字」の並びを検索する方法をわかりやすく解説
正規表現を使って「1つ以上の大文字の後に小文字が続く」並び(シーケンス)を文字列から検索したい場合があります。この記事では、match_string という関数を定義し、その中で re モジュールの search メソッドを使って正規表現とのマッチングを行う方法を紹介します。
関数の外側で対象となる文字列を定義し、それを引数として渡して関数を呼び出すことで、条件を満たすかどうかを判定できます。
使用する正規表現パターンの意味
今回使用するパターンは [A-Z]+[a-z]+$ です。それぞれの要素は次のような意味を持っています。
- [A-Z]+:1文字以上の大文字アルファベットにマッチ
- [a-z]+$:文字列の末尾にある1文字以上の小文字アルファベットにマッチ
つまり、このパターンは「大文字で始まり、最後が小文字で終わる文字列」を判定するために使われます。
サンプルコード
以下に実際の実装例を示します。
import re
def match_string(my_string):
pattern = '[A-Z]+[a-z]+$'
if re.search(pattern, my_string):
return('The string meets the required condition \n')
else:
return("The string doesn't meet the required condition \n")
print("The string is :")
string_1 = "Python"
print(string_1)
print(match_string(string_1))
print("The string is :")
string_2 = "python"
print(string_2)
print(match_string(string_2))
print("The string is :")
string_3 = "PythonInterpreter"
print(string_3)
print(match_string(string_3))
実行結果
The string is : Python The string meets the required condition The string is : python The string doesn't meet the required condition The string is : PythonInterpreter The string meets the required condition
コードの解説
まず、正規表現を扱うための
reモジュールをインポートします。文字列を引数として受け取る
match_string関数を定義します。関数内では
searchメソッドを使い、指定した正規表現パターンが文字列内に存在するかどうかを確認します。パターンが見つかった場合は条件を満たす旨のメッセージを、見つからない場合は満たさない旨のメッセージを返します。
関数の外側でテスト用の文字列を定義し、コンソールに表示します。
その文字列を引数として関数を呼び出し、結果をコンソールに出力します。
実行結果のポイント
「Python」は先頭が大文字Pで始まり、末尾が小文字で終わるため条件を満たします。「python」はすべて小文字のため大文字部分が存在せず、条件を満たしません。「PythonInterpreter」も先頭が大文字で末尾が小文字のため、条件を満たすという結果になります。
-
組み込み関数を使わずにPythonで大文字・小文字の文字数をカウントする方法
はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題文 文字列が与えられたとき、組み込みの文字判定関数を使用せずに、その文字列に含まれる大文字と小文字の数をそれぞれカウントする必要があります。 通常、この問題はPythonに標準で用意されている islower() や isupper() を使えば簡単に解決できます。しかし今回は「これらの文字判定関数を使わない」という制約があるため、文字のASCIIコード値を活用したアプローチを採用します。 ord() 関数を使うことで、文字列内の各文字のASCIIコード値を取得できます。取得した値が小文字の範囲(97〜122)
-
Pythonで大文字と数字を組み合わせたランダム文字列を生成する方法
Pythonでは、random.choice() を使うことで候補リストの中からランダムに1文字を取得できます。これを指定した回数だけ繰り返してリストに格納し、最後に join() で連結すれば、ランダムな文字列が完成します。ここでの「候補」となるのは、大文字のアルファベット(string.ascii_uppercase)と数字(string.digits)です。以下に関数化した例を示します。関数を使って生成する基本形import string import random def get_random_string(length): random_list = [] for