Użyłem RegExp rzucić trochę razy, ale nadal daleko do bycia ekspertem. Tym razem chcę sprawdzić poprawność formuły (lub wyrażenia matematycznego) przez regExp. Najtrudniejszą częścią jest sprawdzenie poprawności nawiasów początkowych i końcowych w formule.
Wydaje mi się, że w internecie jest jakaś próbka, ale nie mogłem jej znaleźć. Czy ktoś może zamieścić link do takiego przykładu? lub pomóc mi w jakiś inny sposób?RegExp, aby sprawdzić poprawność formuły (wyrażenie matematyczne z dopasowanymi nawiasami)?
Odpowiedz
Języki z dopasowanych zagnieżdżonych nawiasów nie są regularne językach, a zatem nie mogą być uznane przez wyrażeń regularnych. Niektóre implementacje wyrażenia regularnego (na przykład w środowisku .NET) mają rozszerzenia do radzenia sobie z tym, ale to naprawdę nie jest przyjemne w pracy. Sugeruję więc użycie dostępnego parsera lub samodzielne zaimplementowanie prostego parsera (ze względu na zabawę).
Dla rozszerzenia w realizacji .NET zobaczyć MSDN on balancing groups.
Jeśli wyrażenie matematyczne polega dopasowane zagnieżdżonych nawiasów, to nie jest to gramatyka regularna ale jeden kontekst wolne i jako takie nie mogą być analizowane za pomocą wyrażenia regularnego.
+1, kiedy wyjąłeś słowa z moich ust. Chociaż można zbliżyć się do cofnięcia, ale to jest ograniczone i jest to, szczerze mówiąc, hack i znak, że używasz niewłaściwego narzędzia do pracy. –
Lepiej sformułowane: * nie można analizować za pomocą implementacji regex nie obsługujących dopasowywania rekursywnego * (Perl, PHP i .NET * mogą * to zrobić). –
@Bart - nie określić język, więc myślę, że jest to standardowy regex, nie Perl – DVK
- 1. Wyrażenie regularne, aby uzyskać ciąg między nawiasami w JavaScript
- 2. Formuły matematyczne na widok tekstu w Androidzie
- 3. Jak sprawdzić poprawność wyrażenia regularnego?
- 4. YYYYMMDD Formatuj wyrażenie regularne, aby sprawdzić poprawność daty w C# .net
- 5. Wyrażenie matematyczne LaTeX w dzianinie knitr (Sweave)
- 6. Jak sprawdzić poprawność tablicy?
- 7. Python - oblicz wyrażenie matematyczne w ciągu znaków
- 8. Jak sprawdzić, czy obiekt jest obiektem RegExp?
- 9. Oblicz wyrażenie matematyczne z ciągu znaków przy użyciu VB
- 10. Jak sprawdzić poprawność xml z php
- 11. Dlaczego wyrażenie RegExp z flagą globalną podaje nieprawidłowe wyniki?
- 12. Krojenie wierszy Pandy z ciągami dopasowanymi powoli
- 13. Jak sprawdzić poprawność wybranej wartości w DropDownList?
- 14. Jak sprawdzić poprawność daty MYSQL w PHP?
- 15. Elixir Ecto: Jak sprawdzić poprawność klucza obcego?
- 16. Wyrażenie regularne, aby sprawdzić Dozwolone znaki nie działa w Javie
- 17. Obliczanie matematyczne SASS
- 18. Jak mogę sprawdzić poprawność wyjścia XmlSerializer?
- 19. Jak sprawdzić poprawność aktualizacji przed instalacją
- 20. XSLT wyrażenie, aby sprawdzić czy zmienna należy do zestawu elementów
- 21. jak sprawdzić poprawność identyfikatora powiązanego modelu?
- 22. RegExp wyrażenie regularne znaleźć i zastąpić całe słowa jedynie
- 23. Jak sprawdzić poprawność dwóch pól dla unikalności
- 24. Jak sprawdzić poprawność obiektu JSON w java?
- 25. Komponowanie regexp?
- 26. Jak sprawdzić poprawność pliku YAML z wiersza poleceń?
- 27. Jak "sprawdzić poprawność" NSTimer po unieważnieniu go?
- 28. sprawdzić poprawność składni plików PHP bardziej efektywnie
- 29. Jak sprawdzić poprawność adresu IP w Pythonie?
- 30. Jak sprawdzić poprawność XHTML za pomocą nokogiri?
Byłem używać tego Regexxp jako wzorzec w schemacie XML do sprawdzania wartości atrybutu. Wszelkie sugestie w tym kontekście? – WSK
* ale to naprawdę nie jest zabawne pracować z * jest niedopowiedzeniem! Próba przeanalizowania takich potworów jest koszmarem! :) –
Jeśli chcesz użyć dostępnych narzędzi z pola XML, możesz spróbować użyć XSLT. XSLT jest językiem pełnym Turinga i dlatego jest w stanie wykonać to zadanie, ale nie potrafię powiedzieć, ile wysiłku przyniosłoby to i jeśli wynik byłby kawałkiem kodu. –