Bir regex ile geçerliyse bir dosyayı test etmek istiyorum. file_string = >sp|Q1ABCD|003R_FRG3G(438aa)Uncharacterizedprotein1A.[virus1(isolateABCD)(AB-1)]MLFLGTIGLAVVVGGLMAYGYYYGHHDE2-9:ArpllGKT>sp|Q2DBAC|004R_FRG3G(60aa)Uncharacterizedprotein1B.[virus2(isolateBGF)(AB-2)]NAKYDTDQGVGRMLFLGTIGLAVVVGGLMAYGYYYDGKTPSSGTSFHTASPSFSSRYRY33-40:GyyydGKT50-100:GyyydGKT>sp.......
> sp .... ile demek istiyorum. Kullandığım normal ifade her zaman eşleşir.python regex assistence
-3
A
cevap
0
Sağladığınız normal ifadeyle, ilk girdinin ilk kısmı ve son girişin son kısmı eşleşiyorsa bu yeterlidir. Çünkü, Wiktor S'nin işaret ettiği gibi, .*
parçaları ,hiçbir şeyi.
^(>sp\|[PQ].{5,7}\|(?:.(?!>sp))+?\(\d+aa\)(?:.(?!>sp))*?\[[^\]]*?\][ACDEFGHIKLMNPQRSTVWY]*(?:\d+-\d+:(?:(?!>sp).)+)+)+$
gibi regex kısıtlayan deneyin böylece belki biraz uyarlamak zorundayım.
Saygılar
"devam ediyor" diyor - ne diyor? Ayrıca neden '' 'önce' ''? Boru işaretinden kaçmak istemiyor musun? – Torxed
"bu yapı" - hangi yapı? Lütfen mümkün olduğunca açık olması için sorunuzu düzenleyin – Francesco
['^ (> sp \ | [PQ] [^ |] + \ |. +? \ (\ d + aa \) deneyin. *? \ [. *? \ ] [AC-IK-NP-TVWY] * \ d + - \ d +. +) + $ '] (https://regex101.com/r/mY1uD0/2). –