3
私はシーケンス内のモチーフを検索しています(ギャップがあるため、正規表現はpatternの各シンボルの後に - *でオーバーコンプレックスが表示されます)。 次のコードは、コードが動作regex検索が終了しない
import re
line = """MRVKE---TRKNY-QH--------S-----W-------GRGLWSLWRW-------------G---T-------MLLG--ML-M----IS-S--A-A-----E-Q---S--WVTVYYGVPVWREATT-TLFCASDAKAYDTEKH-NVWATHACVPTDPNPQEVQL--NVTENFNMWKNNMVDQMHEDIISLWDQSLKPCVQLTPLCVT-LNC-SD------TINA---TTANNTINA----------------TTT-----TPT-----I----NATT-------------ANKSMEIG---------E---MR----NCSFNIT----NM---G-K-KMK--EYALFYN----LDVV---------------SI-----------------D-------E-----------------DNNNK-------------------------------------------TS--------Y---RLK-SCNTSVI-TQACP-KVSFKPIPIHYCAPAGFAILKCND-KKFNGTGPCGNVSTVQCTHGIKPVVSTQLLLNGSLAE-E-EVVIRSENFTNNVKTIIVQLKNPVMINCTRP-NNNTR-KS-I---HM---GP----GQ-A-F-YAT-GAI---IGDIR-QAHCNI--SE-------------------------------------------K--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------E"""
pattern = "[KR]?-*[KR]?-*[KR]-*[^-]?-*[^-]?-*[KR]-*[^-]-*[^-]-*[^-]?-*[^-]?-*[ILVM]-*[^-]-*[ILVF]"
o = re.search(pattern, line)
実行を停止しない他のラインおよび他のモチーフ、例えばため(つまりマイクロ実行を終了)次のものがあります。
pattern = "[KR]?-*[KR]?-*[KR]-*[^-]?-*[^-]?-*[KR]-*[^-]-*[^-]-*[^-]?-*[^-]?-*[ILVM]-*[^-]-*"
pattern = "[KR]-*[^-]?-*[^-]?-*[KR]-*[^-]-*[^-]-*[^-]?-*[^-]?-*[ILVM]-*[^-]-*[ILVF]"
大きな行間が行の最後から削除されても、正常に動作します。 実際には、vimはこの正規表現検索の実行を終了することもできません。
これは彼の正規表現と同じではありません。たとえば、最初の2回は '[KR]'はオプションです... –
@TimPietzcker:グループの後に '{1,3}'があります。 –
それは同じようには動作しません。 '-K-'は '[KR]? - * [KR]?* [KR] - *'とマッチしますが、 '(?:[KR] - *){1,3}'とは一致しません。 –