/ / python正規表現の特定の文字、任意の組み合わせ - python、正規表現

Python正規表現の特定の文字、任意の組み合わせ - python、正規表現

だから、私は正規表現の節を作成しようとしているが、 "ACTG" 有効なものとして受け入れることができます。何か他の "ACTG" その他の文字は無効です。

最終的に、私はwhileループから取り除きます。それはテスト目的のためです。今、私はそれがa、c、t、またはgで始まる限り、それが有効であると信じています。

正規表現にマッチよりも適している機能がありますか?

import re
while (True):
DnaString = str(input("enter your polynucleotide chain code hooblah"))
if (re.match("([ACTG]+[ACTG]*)", DnaString, flags=0)):
#if re.search("^ACTG", DnaString) != -1:
print ("valid chain.")
else: #(re.search("^[ACTG]+[ACTG]*$", DnaString) == -1):
print("invalid chain, please check your input.")

if (DnaString.find("end") != -1):
print("ohokaybye.")
break

回答:

回答№1は2

なぜではない

if all(c in "ACGT" for c in DnaString):
# Do success
else:
# Do failure

回答№2の場合は1

あなたの問題は、文字列内のどこにでもACTG文字を検索しているだけで、他に何も許可されていないことを指定しているということです。 正規表現を次のように変更すると ^[ACTG]+$ 期待どおりに動作します。 ^と$文字は、それぞれ行の始まりと終わりを意味するアンカーです。

したがって、上の正規表現は、4つの文字のうちの1つ以上を含む文字列と一致し、その前後に他の文字を許可しません。


回答№3の場合は0

内部的に許容可能な文字を繰り返すことを許可した場合、これはあなたが望むものであるかもしれません:

"[A|C|T|G]{4}"