import re
str_1 = "ABABABABABAabababaacdcdcdcd"
str_2 = "ABABABABAB1ab2babaacdcdcdcd"
str_3 = "123456A"
str_4 = "123456"
#str_3Plus_d = re.search(r'(?=.*?\d)[A-Z\d]{10,}',str_2).group(0)
str_3Plus_d = re.search(r'(?=.*?\d)[A-Z\d]{2,4}',str_2).group(0)
print(str_3Plus_d)
#str_3plus_a = re.search(r'(?=.*?\d)(?=.*?[A-Z])[A-Z\d]{3,}',str_4).group(0)
#str_3plus_both = re.search(r'(?=.*?\d)(?=.*?[A-Z])[A-Z\d]{3,}',str_4).group(0)
STRING([A-Z]とDIGITS)の検索にはまっています。私は類似の質問をここで検索しました - https://stackoverflow.com/a/28334645/4928635、それは(?=。*?\ d) "少なくとも1桁をチェックします"と書かれていますが、そのようではありません。見られるように - 何の数字を持っていない -Python Regex - [A-Z]とDIGITSのSTRING(
str_3Plus_d = re.search(r'(?=.*?\d)[A-Z\d]{2,4}',str_2).group(0)
print(str_3Plus_d)
それは私に文字列を出力しますか?下図のように、それは私のJupyterNotebookに印刷する文字列がある - 「の例として、変数の文字数と、少なくとも2桁と、せいぜい4桁の数字、 - - どのようにキャッチする - AAABBB2223で文字列をキャプチャする方法
ABAB
「...
さらに明確化 -
PM-2ring @: - 数字とアルファベット文字は任意の順序で発生する可能性があり、捕獲しようとしているサブストリングイムは、長さを変えることができます。
@ jean-françois-fabre:あなたはあなたの答えを削除したようです。あなたが与えたコードは、あなたが言ったことを正確に行いました。
@clasg: - あなたのコメントと回答の両方が今日私によく教えてくれました - 非常に感謝しています - 私はいつか戻って、あなたの答えをアップアップしたいと思ったら教えてください。
''([A-Z] + \ d \ d +) ''とは何ですか?どうしてキャプチャしないもの? –
あなたの正規表現は2〜4文字または数字に一致します。先読み '(?=。*?\ d)'は文字に制限はありません。したがって、数字が5桁目以降になると、先読みはそれを見つけますが、 '[A-Z \ d] {2,4}'とマッチしません。 – ClasG
@ Jean-FrançoisFabreこれは*非キャプチャ*グループではありません。 *肯定的な見方です*。 – ClasG