Help us understand the problem. What is going on with this article?

[Python3]文字列に特定の文字を検索する方法(追試)

More than 1 year has passed since last update.

はじめに

Pythonの勉強はもっぱらpaizaのコードガールこれくしょんないしはスキルチェックを利用していたのですが、今日は大昔に全然意味がわからなくて挫折したcheckioの課題に挑戦しました。

https://py.checkio.org

ちなみにコードガールこれくしょんはクッソ簡単な構文を早打ちするだけのゲームなので、Python触ったことない人の第一歩としてはともかく、ある程度慣れた人がやるとただの作業になります。
あと、この記事以降もですが、断りが無ければ基本的にPython3のことを扱います。

文字列検索(matchとsearch)

他にもあるのは知っていますが、基本的にここに書く記事では自分が触ったことを書きます。
(網羅的に知りたい人は以下の公式ドキュメントか、他の詳しい方の記事を参照願います)

https://docs.python.jp/3/howto/regex.html#performing-matches


文法のおさらい

メソッド 説明 構文
match 文字列の先頭に検索文字が含まれるか探す match("検索文字","文字列")
search 文字列のに検索文字が含まれるか探す search("検索文字","文字列")

正規表現で検索文字を複数指定する

「とある文字列に英字大文字・小文字・数字が一文字以上含まれる」というのをやりたかったで色々調べました。
(参照リンク)
https://docs.python.jp/3/howto/regex.html#compiling-regular-expressions
https://qiita.com/wanwanland/items/ce272419dde2f95cdabc

結論から言うとできなかったので、条件文を三つ繋げるクソダサコードを書きました。
正規表現については、時間があったら(機会があったら)また調べるかもしれません。

調べる過程でわかったこと

  • 英字小文字・英字大文字・数字が一文字以上順番に並んでいること

re.search("[a-z][A-Z][0-9]+", password)

  • 英字小文字・英字大文字・数字のどれかが一文字以上含まれていること

re.search("[a-z]|[A-Z]|[0-9]+", password)

最終的に書いたコード

def checkio(data: str) -> bool:
    import re
    passwd = data
    # 文字数チェック
    if int(len(passwd)) < 10:
        return False
    # 文字列チェック
    if bool(re.search("[a-z]+", passwd)) and bool(re.search("[A-Z]+", passwd)) and bool(re.search("[0-9]+", passwd)):
        return True
    else:
        return False
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away