0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

0
Last updated at Posted at 2018-11-23

はじめに

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

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

文字列検索(matchとsearch)

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


文法のおさらい

メソッド 説明 構文
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
0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?