RegExp'i birkaç kez bıraktım ama yine de uzman olmaktan çok uzaktayım. Bu sefer regExp tarafından bir formül (veya matematik ifadesi) doğrulamak istiyorum. Buradaki zor kısım, uygun başlangıç ve bitiş parantezlerini formülde doğrulamaktır.
İnanıyorum ki, internette bir örnek olmalı, ancak bulamadım. Birisi böyle bir örnek için bir bağlantı gönderebilir mi? veya başka yollarla bana yardım et?Formülü doğrulamak için RegExp (eşleşen parantezli matematik ifadesi)?
cevap
Eşleşen iç içe parantezli diller normal diller değildir ve bu nedenle normal ifadeler tarafından tanınamazlar. Düzenli ifadenin bazı uygulamalarının (örneğin .NET çerçevesinde) bununla uğraşmak için uzantıları vardır, ancak bununla çalışmak gerçekten eğlenceli değildir. Bu yüzden, mevcut bir ayrıştırıcıyı kullanmayı veya basit bir ayrıştırıcıyı kendiniz uygulamanızı öneririm (eğlence uğruna).
.NET uygulamasındaki uzantı için MSDN on balancing groups'a bakın. Kelimeleri ağzımdan çektiğinizde,
Matematiksel ifadeniz, eşleşen iç içe geçmiş parantez içeriyorsa, normal bir dilbilgisi değil, bağlamsal olmayan bir yöntemdir ve bu nedenle normal ifadeler kullanılarak ayrıştırılamaz.
+1. Birisi backtracking ile yakın olabilir, ancak bu sınırlı ve tam olarak, bir kesmek ve iş için yanlış bir araç kullandığınız bir işarettir. –
Daha iyi doldurulan: * özyinelemeli eşleşmeyi desteklemeyen düzenli ifadeler kullanılarak ayrıştırılamaz * (Perl, PHP ve .NET * bunu * yapabilir *). –
@Bart - o dili belirtmemişti, bu yüzden standart bir regex olduğunu, Perl'in – DVK
- 1. Dosya adlarını doğrulamak için Javascript ifadesi
- 2. LaTeX matematik ifadesi
- 3. Bir matematik formülü içinde lateks büyük bölüm işareti
- 4. "+0" ifadesi ne demek regexp \ k <name+0>?
- 5. İki dizeyle eşleşen Javascript normal ifadesi
- 6. Parantezli basit bir hesap makinesi nasıl çalışır?
- 7. URLRegularExpression URL'yi doğrulamak için
- 8. Matematik için JIT derleyiciler
- 9. robots.txt için Regexp
- 10. RegExp
- 11. Eğer formülü
- 12. Dplyr ile köşeli parantezli tablo adları
- 13. Tam eşleşen dizgeyi değiştirmek için düzenli ifade
- 14. Güncel MS Excel formülü vdb()
- 15. JavaScript RegExp uyumluluğu
- 16. Belirli bir dize dışında bir şeyle eşleşen bir JavaScript normal ifadesi tanımlama
- 17. MySQL için Haversine formülü tersine mi?
- 18. Eşleşen filtre ifade metni
- 19. regexp dışlama
- 20. VBScript - regexp
- 21. regexp-me kütüphanesi nasıl kullanılır?
- 22. Ofset formülü mantıksal netlik
- 23. Sıfırla Homebrew Formülü
- 24. Formülü grafiğe ekleme
- 25. Pseudocode'a Excel Formülü
- 26. TypeScript'te RegExp
- 27. Döngü ifadesi için garip
- 28. Simplexml xpath formülü çalışmıyor
- 29. Regexp eşleşme alanı olsun ya da olmasın
- 30. kristal formülü açıklaması
Bu RegExp'i, bir özniteliğin değerini doğrulamak için XML şemasındaki bir model olarak kullanmaktaydım. Bu bağlamda herhangi bir öneriniz var mı? – WSK
* ama bu gerçekten çalışmak için eğlenceli değil * bir understatement! Böyle canavarları parçalamaya çalışmak bir kabus! :) –
XML alanından mevcut araçları kullanmak istiyorsanız XSLT'yi kullanmayı deneyebilirsiniz. XSLT bir Turing-complete dilidir ve bu nedenle işi yapabilir, ancak bunun ne kadar çaba göstereceğini ve sonucun güzel bir kod parçası olacağını söyleyemem. –