Python'da bir dosyanın başlangıcı ve bitişi için normal ifadeyi bulmakta zorlanıyorum. Bunu nasıl başarabilirim? Belki de yapmaya çalıştığınız şey gibi, sorunuzu daha açık bir şekilde ortaya koymalıydınız.Python'da regex ile dosyanın eşleştirilmesi ve sonlandırılması
cevap
Bu, dosyayı bir bütün dizeye dağıtabilirsiniz ve yeniden kullanarak deseninizi eşleştirebilirsiniz.
import re
data=open("file").read()
pat=re.compile("^.*pattern.*$",re.M|re.DOTALL)
print pat.findall(data)
İstediğinizi yapmak için daha iyi yollar vardır;
Çünkü. * Açgözlüdür, bir dosyada yalnızca 'desen' örneğini bulacaktır. Re.M bayrağını belirttiğinizden beri, dosyadaki her yeni satırın hemen karşısındaki $ eşleşmesi, yani açgözlü. * Ve re.DOTALL, ilk. * Dosyadaki son 'kalıptan önceki her şeyle eşleşecek ve ikincisi Son 'desen' sonra her şeyi maç. –
ne olursa olsun. OP tam olarak ne yapmak istediğinden emin olmadığımızdan, bu tam bir çözüm değildir. Yapabileceğim en iyi şey, tüm dosyayı bir dize olarak okuyabildiğini ve normal dizgiler gibi normal ifadeleri kullanabileceğini söylemek. – ghostdog74
regex $
değil arkadaşın; bkz. this SO answer
Tüm dosyayı bir dizeye okuyun, ardından \ A bir dizenin yalnızca başlangıcıyla eşleşir ve \ Z yalnızca bir dizenin sonuna denk gelir. Re.MULTILINE ile '^', bir satırsonu hemen sonra ve dizesinin başlangıcıyla eşleşir ve '$' dizesi ve dizgisinin sonuna yeni satırdan hemen önce eşleşir. re syntax için Python belgelerine bakın.
import re
data = '''sentence one.
sentence two.
a bad sentence
sentence three.
sentence four.'''
# find lines ending in a period
print re.findall(r'^.*\.$',data,re.MULTILINE)
# match if the first line ends in a period
print re.findall(r'\A^.*\.$',data,re.MULTILINE)
# match if the last line ends in a period.
print re.findall(r'^.*\.$\Z',data,re.MULTILINE)
Çıktı:
['sentence one.', 'sentence two.', 'sentence three.', 'sentence four.']
['sentence one.']
['sentence four.']
- 1. Regex ile -, ::, (ve)
- 2. ile ve regex
- 3. Bir deponun Ext.menu.Menu ile eşleştirilmesi
- 4. Yapısal indüksiyonun sonlandırılması
- 5. Threadpool'un Eşleştirilmesi
- 6. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 7. Enlem ve boylamın bir 3D Sphere ile eşleştirilmesi
- 8. Python ve Regex ile dhcpd.leases Ayrıştırma
- 9. Regex/küçük harf ve ben Regex ile bazı sorunlar var
- 10. excel'de sütunların eşleştirilmesi
- 11. eclipse search - regex arabelleğe dönüşlü dosyanın başlamasını/sonunu bulma
- 12. Postgresql'de Sıralı Olayların Eşleştirilmesi
- 13. "^" gibi ölü anahtarların eşleştirilmesi
- 14. Python - Çizginin değil, dosyanın belirli bir bölümüne yaz - Regex
- 15. ve virgül ile regex için
- 16. Mysql arama ve regex ile kaldır
- 17. boost :: gzip_decompressor ile filtering_streambuf(), dosyanın
- 18. Koleksiyonun java'da iki alanla eşleştirilmesi
- 19. Django filtresi regex ile
- 20. Python: Regex ile değiştir
- 21. Postgresql ve ActiveRecord: Regex
- 22. Emacs regex ile kopyala
- 23. NSPredicate ve Regex
- 24. tmux çalıştırılırken ok tuşlarının eşleştirilmesi
- 25. Hesaplama kesişimi ve hadoop ile iki dosyanın kayıtlarının farkını ayarlama
- 26. ek açıklama ve regex
- 27. = ve P kısacası bir regex
- 28. Sayısal Regex egrep ile karıştırılıyor?
- 29. Regex: Adlandırılmış gruplar ve değiştirmeler
- 30. phpstorm regex arama ve değiştir
Normal ifadeler dizeleri değil, dosyalar uygulanır. – MattH