Ankündigung

Einklappen
Keine Ankündigung bisher.

Regexfrage bezügl. öffnender Klammern in einem mathematischen Term

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regexfrage bezügl. öffnender Klammern in einem mathematischen Term

    Da ich gerade dabei bin, mathematische Terme zu parsen, habe ich vor, sicherzustellen, dass eine öffnende Klammer nur nach Anfang oder einem mathematischen Operator kommt:

    Wenn ich also den String gegen /[^+\-*/][(]/g matche, bedeutet das, dass er Stellen finden soll, bei denen eine öffnende Klammer nach einem beliebigen Zeichen kommt, das kein Operator ist.

    Wie kann ich den Ausdruck so ändern, dass er auf öffnende Klammern, die am Anfang stehen, nicht anschlägt, d. h. am Anfang stehende öffnende Klammern akzeptiert?

  • #2
    Zitat von AFX Beitrag anzeigen
    Wie kann ich den Ausdruck so ändern, dass er auf öffnende Klammern, die am Anfang stehen, nicht anschlägt, d. h. am Anfang stehende öffnende Klammern akzeptiert?
    Nimm einen Lexer und keine RegExp. Ab einer gewissen Komplexität der Sprache (wie z.B. Klammersetzung) reichen die Möglichkeiten von RegExp nicht mehr aus, um alle Regeln abzubilden.

    Kommentar


    • #3
      Vielen Dank! Ist ein Lexer so ein Ding wie math.js (https://mathjs.org/)?

      Vor allem habe ich nun mit npm math.js importiert. Um die Installation zu testen, habe ich nun meinen Code wie folgt geschrieben, bekomme aber den Fehler "Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf file:///C:/Users/andfe/Documents/Projekte/Erfolge/Rechner/source/math.js. (Grund: CORS-Anfrage war nicht http).":

      HTML-Code:
      <!DOCTYPE html>
      <html lang="de">
      <head>
        <meta charset="utf-8">
        <title></title>
      </head>
      <body>
        <h1></h1>
        <main>
      
         <script type= "module" src="source/math.js">
          window.onload = function () {
      
          alert('test');
      
          import { sqrt } from 'mathjs';
          alert('math.js: ' + sqrt(-4).toString());
      
      }
         </script>
      
        </main>
      </body>
      </html>
      Ich habe da rumgegugelt, aber nicht rausgefunden, was ich falsch gemacht habe.

      Kommentar


      • #4
        Sh. https://developer.mozilla.org/en-US/...andard_scripts, Module funktionieren nur via Server.

        Kommentar


        • #5
          Zitat von Dormilich Beitrag anzeigen
          Module funktionieren nur via Server.
          module.js
          HTML-Code:
          export const myPow = (value) => value * value
          export const mySqrt = (value) => Math.sqrt(value)
          html:
          HTML-Code:
          <!DOCTYPE html>
          <html lang="de">
          <head>
            <meta charset="UTF-8">
            <title>Document</title>
          </head>
          <body>
          <script type=module>
            import { myPow,  mySqrt } from './module.js'
            console.log (myPow(2))
            console.log (mySqrt(2))
          </script>
          </body>
          </html>

          Kommentar


          • #6
            Ok vielen Dank. Dass man da nur via Server vorgehen kann, wusste ich nicht.

            Kommentar


            • #7
              Zitat von AFX Beitrag anzeigen
              Ok vielen Dank. Dass man da nur via Server vorgehen kann, wusste ich nicht.
              Wieso ? #5 zeigt, dass es geht.

              Kommentar


              • #8
                #5 geht, aber mit math.js habe ich es irgendwie nicht geschafft.

                Kommentar

                Lädt...
                X